工作流编写教程

介绍

ONES中使用了flowchart.js作为前端展示,并且扩展了flowchart.js的流程描述语言。
flowchart.js 参见: https://github.com/adrai/flowchart.js

描述语言分为三部分,使用 (空一行)作为分割,分别是节点定义执行流程描述节点权限描述

节点定义

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 代表当前流程数据的创建者
原文地址:https://www.cnblogs.com/h2zZhou/p/5362606.html