Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

IRQ 中断请求

活动 acts.core.irq 由引擎发起中断请求,等待客户端响应。当活动发起时,活动处于中断状态(interrupted),需要客户端接受并处理后调用完成接口继续执行。

name: test
steps:
    - id: step1
      uses: acts.core.irq
      params:
        # 活动标识key,发送给客户端的消息key为此值
        key: act1
      options:
        # 导出变量到父节点
        exposes:
          - name: v

活动属性如下:

key名 称说 明
id标识活动节点的唯一标识
name名称有意义的名称,可以是中文等任意字符
tag标签标签设置
uses包名固定为 acts.core.irq
params参数传递给包的参数,主要包含 key 作为消息关键字
inputs输入发送给客户端的输入数据
outputs输出客户端返回后导出到父节点的变量
options选项额外选项,如 exposes 导出变量

客户端处理

客户端通过 on_message 回调接收中断请求消息,处理后调用 do_action2 完成:

#![allow(unused)]
fn main() {
engine.channel().on_message(move |e| {
    if e.is_params_key("act1") && e.is_state(MessageState::Created) {
        // 处理业务逻辑
        // 完成后调用 Next 继续执行
        rt.do_action2(&e.pid, &e.tid, EventAction::Next, Vars::new()).unwrap();
    }
});
}