Skip to content

SnakerFlow流程引擎

guoqing.zhao edited this page Dec 2, 2019 · 1 revision

SnakerFlow流程引擎

简介

Snaker是一个基于Java的轻量级工作流引擎,适用于企业应用中常见的业务流程。本着轻量、简单、灵巧理念设计,定位于简单集成,多环境支持。

特性

一、轻量:

snaker-core.jar大小208K,代码行数约7000行,强大的扩展支持,不依赖于具体的ORM框架

二、简单:

  • 表设计简单,七张核心表
  • 流程组件简单[start/end/task/custom/subprocess/decision/fork/join] image

三、灵巧:

  • 暴露大量可扩展接口,支持流程设计器、流程引擎的组件模型自定义
  • 数据持久层面支持jdbc+dbutils、mybatis、hibernate、springjdbc。目前支持的数据库有oracle、mysql、sqlserver。

设计器(Web在线/Eclipse插件)

njZEtI.png

核心概念组件

uk7Yy4.png

  • process 流程
  • start/end 开始/结束
  • transition 变迁转换
    • expr 策选择Decision节点的输出变迁表达式
  • task 任务
    • assignee 任务参与者变量
    • form 用户参与的表单任务对应的URL
  • custom 自定义
  • sub-process 子流程
    • processName 子流程名称(对应process的name属性)
  • decision 决策点
    • expr 决策选择表达式
  • fork 分叉
  • join 结合

生成的流程.snaker文件

<process displayName="请假流程测试" instanceUrl="/snaker/flow/all" name="leave">
<start displayName="start1" layout="24,124,-1,-1" name="start1">
<transition g="" name="transition1" offset="0,0" to="apply"/>
</start>
<end displayName="end1" layout="570,124,-1,-1" name="end1"/>
<task assignee="apply.operator" displayName="请假申请" form="/flow/leave/apply" layout="117,122,-1,-1" name="apply" performType="ANY">
<transition g="" name="transition2" offset="0,0" to="approveDept"/>
</task>
<task assignee="approveDept.operator" displayName="部门经理审批" form="/flow/leave/approveDept" layout="272,122,-1,-1" name="approveDept" performType="ANY">
<transition g="" name="transition3" offset="0,0" to="decision1"/>
</task>
<decision displayName="decision1" expr="#day &gt; 2 ? 'transition5' : 'transition4'" layout="426,124,-1,-1" name="decision1">
<transition displayName="&lt;=2天" g="" name="transition4" offset="0,0" to="end1"/>
<transition displayName="&gt;2天" g="" name="transition5" offset="0,0" to="approveBoss"/>
</decision>
<task assignee="approveBoss.operator" displayName="总经理审批" form="/flow/leave/approveBoss" layout="404,231,-1,-1" name="approveBoss" performType="ANY">
<transition g="" name="transition6" offset="0,0" to="end1"/>
</task>
</process>

Java模型

  • StartModel、TaskModel、EndModel、DecisionModel ukxa0U.png
  • processModel uASxln.png

核心流程

  • 发起一个流程 ueisG6.png
  • 审核动作 ueiUr4.png

数据库ER模型

njAfBj.png

activiti 数据库模型 https://blog.csdn.net/hj7jay/article/details/51302829

github

参考文档