跳到主要内容

调用

图标

Call_image1+1.png

功能

主体复用自己的其它独立被动流程

提示
  • 这里的主体可以是全局观察者、实体个体、实体观察者
  • 类似于编程中定义函数,我们往往将一个公共行为建模为一个独立的被动流程,以方便该作用域内其它行为复用

要点

提示

类似于编程中定义函数,我们往往将一个公共行为建模为一个独立的被动流程,以方便构建其它行为流程时复用。

例子

如一个DeFi算法稳定币套利者具有3个独立的被动行为,A 买卖代币、B 铸造稳定币、C赎回稳定币,我们可以通过调用,为其方便的构造出多种交易策略,避免建模冗余

  • 正偏差套利A-B-A:当价格高于1$,先调用A买入协议代币,再调用B铸造稳定币,最后调用A卖出稳定币
  • 负偏差套利A-C-A:当价格低于1$,先调用A买入稳定币,再调用C按面值赎回等价值的协议代币,最后调用A卖出协议代币

使用条件

流程必须符合以下所有条件才能被调用

  • 必须是被动行为
  • 必须是独立(不是一个子流程)的
  • 必须处于调用者的作用域内
提示
  • 全局流程中能够调用其它全局被动流程
  • 实体行为中可以调用全局被动流程
  • 实体的个体行为中可以调用本种群观察者被动流程,反之不行
  • 实体个体行为中的子流程中,可以调用该实体个体被动行为、观察者被动行为、全局被动行为
  • 调用与请求调用的区别是,调用只能对本作用域内的被动行为使用,请求调用可以对作用域外的实体被动行为使用

数据传递

如果被调用流程中有接口,调用对象会出现相应端口,数据传递的方法详见流程的数据传递章节

设置方法

Call_image2.png

选择调用对象

  • 点击下拉菜单选择目标流程即可,只有可以被调用的流程会显示在下拉菜单中

  • 跳转到原型

    选好调用对象后,点击右侧跳转按钮可以将当前画布视图聚焦到目标对象

    Call_image3.png

端口参数值传入

  • 如果被调用流程中有变量接口,则调用组件会出现变量端口

    Call_image4.png

  • 可以为端口传递数据,有两种传递方式

    • 传入表达式取值

      Call_image5.png

    • 通过状态链传入数据对象

      Call_image6.png

    • 系统优先识别状态链传递模式,此时调用对象属性面板中参数栏无法输入

      Call_image7.png

  • 如果不传递指定数据

    • 对容器接口,如果被调用流程使用了该接口,运行时将会报错
    • 对变量接口系统将执行接口默认值,即被调用流程相应接口数据对象设置的初值,如下图

      Call_image8.png

提示

关于为流程端口传递数据的更多信息,请参考流程结构及数据传递章节

组件的数据输出

端口数据

  • 在本组件动作后计算式中以"This.port_name"形式访问
  • 在本流程后继对象计算表达中以"call_component_name.port_name"形式访问

案例

模型案例:Web3代币交换

Go流程调用了to Trade流程,对WalletAPoolExchangeRate进行$USDC$ETH代币交换