Snaker Document

流程定义

  • 使用Eclipse设计器插件
  • 使用web设计器
  • 组件模型属性

使用Eclipse设计器插件

    eclipse设计器插件是在eclipse4.3(kepler)版本开发的,经测试,是可以在eclipse4.3+,myeclipse9+上面运行
  • 安装Eclipse插件

      在百度网盘上下载snaker-designer-*.*.*.jar插件包,直接copy至eclipse安装目录下的plugins文件夹里即可使用。
      考虑到大家下载的eclipse版本可能无法使用设计器,建议直接从百度网盘上下载经过测试的eclipse-kepler版本
      Myeclipse安装插件时,可直接把插件包copy至dropins文件夹下面即可
    
  • 创建流程定义

1)新建流程

依次选择File->New->Other->Snaker,如下图所示: image

选择Snaker Process File并输入文件名称,如下图所示: image

点击Finish,则打开流程设计器主界面,其中包括两大部分:流程组件、属性Properties视图,如下图所示: image

2)定义节点

由于节点定义都是拖拽式的,所以不方便用图形来演示。这里仅仅贴上一个定义好的请假流程图: image 定义流程的几个注意点:

1)一个流程必须设置name、displayname属性

2)最常用的节点是task,如果是人工任务,则需要设置assignee[参与者]、form[设置表单url],表单url的规则可以表示contextPath下面的绝对路径,也可以表示相对路径[相对路径是用于页面include情况]

3)decision节点用于决策分支,必须设置expr属性,如果有多个选择分支,则建议设置连接线的expr属性,可参考测试用例

4)snaker支持的会签,仅仅是设置task的performType

5)snaker支持三种参与者方式

直接设置静态参与者,即assignee值为用户、部门或角色的标识符

通过运行时动态传递,即assignee值为变量名称,在调用流程引擎的api时,通过map参数传递这个变量值

通过自定义类[继承Assignment类],设置assignmentHandler属性,assign方法返回值就是参与者

6)主办、协办是通过task节点的taskType设置的。snaker既支持单独的节点作为协办节点,也支持主办节点动态的创建协办任务

3)保存定义

流程定义的保存,实际上就是将图形元素转换为xml格式并保存。上面请假流程的xml数据为

https://github.com/snakerflow/snaker-web/blob/master/src/main/resources/flows/leave.snaker

使用web设计器

web设计器是基于myflow开发的,使用的技术为raphael。
集成web设计器
设计器代码位于snaker-web项目的\snaker-web\src\main\webapp\styles\js\snaker目录下。

如果已有的项目需要集成web版本的设计器,主要是copy这个目录,并且参考\snaker-web\src\main\webapp\WEB-INF\content\snaker目录下process开头的jsp文件,因为设计器需要页面来编辑和展现。
  • 创建流程定义 使用web设计器的前提是已经成功运行snaker-web应用,具体可参考“1.5演示部署”章节

1)新建流程

以admin账号登录snaker-web,点击左栏菜单:流程管理->流程定义,如下图所示:
![image](http://snakerflow.qiniudn.com/11.jpg)

点击“设计”按钮,则打开web流程设计器,如下图所示:
![image](http://snakerflow.qiniudn.com/14.jpg)
web版本的流程设计器布局与样式尽量与eclipse的设计器插件保持一致。其节点和属性参考“组件模型属性”介绍

在流程定义列表页面,点击“初始化”按钮,即可产生6个用于测试的业务流程,如下图所示:
![image](http://snakerflow.qiniudn.com/12.jpg)

注意:流程的状态表示当前流程是否可用,版本号用于管理同名流程的多版本管理

![image](http://snakerflow.qiniudn.com/13.jpg)
上图中的四个图标按顺序分别表示:启动流程、编辑、重新设计、禁用。点击重新设计,可打开已经定义好的业务流程,如下图所示:
![image](http://snakerflow.qiniudn.com/15.jpg)

2)定义节点

web设计器定义流程时注意以下两点:

1)web流程设计器还是适用于开发人员,不适合业务人员。如果面向业务人员,需要多设计器进行改造

2)设计器中连接线需要先点击连接线图标,再选择节点1、节点2,这样才能连接两个节点。连接线的删除是通过del键盘去操作的

3)保存定义 也是将图形元素转换为xml格式,并保存至数据库中,参见wf_process的content字段。

组件模型属性

组件模型 属性 描述
通用属性 name 组件名称,模型内名称唯一
displayName 组件中文显示名称,方便阅读
preInterceptors 前置拦截器
postInterceptors 后置拦截器
Process expireTime 期望完成时间,设置表达式变量由参数传递
instanceUrl 流程定义列表页面直接启动流程实例的URL
instanceNoClass 流程实例编号生成类
Transition expr 决策选择Decision节点的输出变迁表达式
Task form 用户参与的表单任务对应的URL
assignee 任务参与者变量
assignmentHandler 任务参与者处理类
taskType 任务类型(主办/协办)
performType 任务参与类型(针对多个参与者),ANY为其中一个参与者完成即往下流转;ALL为所有参与者完成才往下流转
reminderTime 任务提醒时间
reminderRepeat 提示重复次数
expireTime 期望完成时间
autoExecute 超时是否自动执行
callback 自动执行的回调设置
Custom clazz 自定义节点的Java类路径,两种方式:
1.实现IHandler接口,实现接口时不需要设置下面三个属性。
2.无接口实现的普通java类,需要设置下面方法名称、参数属性
methodName 定义需要执行的java类的方法名称
args 定义传递的参数表达式
var 定义返回值变量名称
SubProcess processName 子流程名称(对应process的name属性)
Decision expr 决策选择表达式
handleClass 决策选择的处理类,实现DecisionHandler接口