介绍
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
代表当前流程数据的创建者