<record model="workflow.activity" id="activity_id">
<field name="wkf_id" ref="workflow_id"/>
<field name="name">activity.name</field>
<field name="kind">dummy | function | subflow | stopall</field>
<field name="subflow_id">subflow_id</field>
<field name="action">(...)</field>
<field name="action_id">(...)</field>
<field name="split_mode">XOR | OR | AND</field>
<field name="join_mode">XOR | AND</field>
<field name="signal_send">(...)</field>
<field name="flow_start">True | False</field>
<field name="flow_stop">True | False</field>
</record>
kind:本 Activity 类型,有 Dummy, Function, Subflow, Stop All 四种。
Function 表示执行 action 中定义的 python 代码,且,执行 action_id 中定义的 server action。常 见情况是,action 中定义一个 write 方法,修改流程关联的对象的状态。对于 Function 类型的节点, action 中定义的代 码或者返回 False,或者返回一个客户端动作 id(A client action should be returned)。
Subflow 类型表示触发“subflow_id”中指定的工作流。仔细的读者或许要问,工作流的执行总是和某 个被处理的对象关联,是的,如果定义了 action,subflow 关联的对象 id 由 action 中定义的代码返回。 如果没有定义 action,系统默认 subflow 关联的对象和本节点所属的工作流处理的对象 id 一致。
stopall 类型表示,流程到此节点则结束,但结束前,系统仍会执行 action 中的代码。
signal_send: 执行完本节点的动作 (action 及 action_id 定义的动作)后,应向别的工作流发往的 signal,格式是:subflow.signal。subflow_id 和 signal_send 必须配合使用,subflow_id 表示,触发 子工作流 subflow_id,在该子工作流中,通常必须定义 signal_send,signal_send 定义父流程中的某 个 signal,表示,子流程处理结束后触发父流程中的信号 subflow.signal。注意,用于父子流程通信的 工作流 signal 必须是形如 subflow.* 。例如,在 HR 模块的 workflow "wkf_expenses"中,需要开发票 时候,它触发流程 account 模块中的工作流“account.wkf”(
split_mode: 有三个选项,XOR,OR,AND,默认是 XOR。
join_mode:有两个选项,XOR,AND,默认是 XOR。
flow_start:表示流程的开始节点。
flow_stop:表示流程的结束节点。