介绍

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