介绍
ONES中使用了flowchart.js作为前端展示,并且扩展了flowchart.js的流程描述语言。
flowchart.js 参见: https://github.com/adrai/flowchart.js
描述语言分为三部分,使用\n\n(空一行)作为分割,分别是节点定义、执行流程描述、节点权限描述
节点定义
eg:make_stockout=>operation: 生成出库单:> m:Sale/Orders::convert_to_stock_out
必填项目:
- make_stockout定义的是一个别名叫做- make_stockout的节点
- =>是节点和其设置的分隔符,这部分是和flowchart一致的
- operation表示的是节点的类型,和flowchart一致,比如- start, end, operation, condition等。- :(注意冒号后面的空格)是标识节点类型的结束
- 生成出库单表示的是节点的显示名称,如果表示为- 生成出库单:正在出库,则冒号前面是节点的按钮名称,后面是节点的状态名称。后面的- :>(注意冒号后面的空格)表示的是节点的显示名称描述结束
非必填项目
- m:Sale/Orders::convert_to_stock_out这部分是一个整体,- m:表示的是执行一个服务接口的方法(M ethod),- Sale/Orders代表的是所执行的服务,命名方式参照ThinkPHP的D()方法参数,- convert_to_stock_out为服务提供的方法。
- 也可以通过此处直接修改当前流程的数据,比如:u:status=1,表示为更新(U pdate)status为1
流程描述
eg:
start(right)->save_bill(right)->confirm->check_if_all_out
check_if_all_out(yes)->response->end
check_if_all_out(no)->continue_out->confirm(right)
- 流程描述以->为分隔符,分隔符两端分别为执行节点的上下文关系
- (right)是flowchart.js的描述方法,标识在前端显示中,会将下一节点置于上一节点右侧
- (yes)or- (no)是condition类型节点专用的,分别标识条件判断执行结果为真或者假的情况下的后续操作
权限描述
权限描述可以通过在前端双击工作流节点进行设置,也可以手动填写,默认的eg:
end=>auto:auto
response=>auto:waiting
save_bill=>auto:owner
注意这三个特殊的执行者身份
- auto:auto代表节点会自动执行
- auto:wait代表当前流程会和其他流程有交叉,并且会等待其他流程的响应
- auto:owner代表当前流程数据的创建者