Fire Workflow开发手册1.0
1. 框架说明
1.1. 基础说明
阅读本文档前请确认已经阅读过下面两篇文档,并对该两篇文档有了较深刻的认识。
? WSI开发手册1.0.doc
? 99_FireWorkflow工作流原理、设计与应用.pdf
Fire Workflow是由国人开发的一个开源工作流引擎,可以解决常见的带有工作流需求的案例。本文的编写目的是让读者能快速的基于Fire Workflow进行工作流相关开发。
1.2. 基础设施
本系统的主体开发框架是WebWork + Spring + iBatis,在这之上引入Fire WorkFlow引擎。
1.3. 框架结构
由于框架是基于WSI框架的,因此这里的编码结构和原来的WSI的编码风格完全一致。
2. 工作步骤
2.1. 工作步骤总体介绍
要做Fire Workflow相关的开发,大约需要做以下的工作。
1. 配置Fire Workflow环境 2. 业务流程数据库设计 3. 画流程图
4. 编写流程执行者Handler 5. 在业务代码中加入流程代码
2.2. 配置Fire Workflow环境
Fire Workflow所需要用到的东西可以在公司的KM下找到。Jar包和脚本等在fireflow例子.zip里都能找到。
2.2.1. 导入Fire Workflow的jar包
将Fire Workflow及其需要使用的第三方jar包导入到业务系统工程里,注意不要和工程里已有的jar冲突:
拷贝以上jar包至项目的Web-INF/lib目录下,并配置好build path。
2.2.2. 在数据库中执行Fire Workflow流程库脚本
由于Fire Workflow采取了业务和流程完全分离的模式,因此程序编写人员并不需要关注流程引擎的工作细节,但是流程引擎需要使用自己的流程表,因此流程库的脚本还是需要执行的。这些脚本创建的7张流程表为:
? t_ff_rt_workitem; ? t_ff_rt_token; ? t_ff_rt_taskinstance; ? t_ff_rt_procinst_var; ? t_ff_rt_processinstance; ? t_ff_hist_trace; ? t_ff_df_workflowdef;
这7张表的关系,详见99_FireWorkflow工作流原理、设计与应用.pdf,这里就不赘述了。
2.2.3. 配置文件
我们需要拷贝spring配置文件到系统目录下:
还有个properties也需要拷贝到系统目录下,将里面的内容置空(KM里的例子里是有配置的,这个是对流程库的task做扩展,以前用Hibernate这么做是有意义的,我们持久层使用的是IBatis,做这样的继承意义不大)。
将内容置空或注释掉。
接下来,我们配置Ibatis的sql map config,设置流程库的7张表。这些sql的xml文件已经包含在了Fire Workflow的jar里了。
2.2.4. 配置流程设计器eclipse插件
在KM里导出FireflowDesigner4Eclipse_1.0.0_beta_build090723.jar,然后将这个jar放在eclipse的plugins目录下,重启eclipses。
2.3. 业务流程数据库设计
由于Fire Workflow采取了业务和流程完全分离的模式,因此流程库和业务库的关联关系通常有两种方式。一是在业务库里添加流程库的关联字段,二是在流程库里添加业务库的字段。由于Fire Workflow自己对流程库进行管理操作,我们应当避免直接修改流程库。因此我们选择第一种方式,在业务库添加流程库的关联字段。
由于流程实例信息基本可以拿到一个流程的所有的信息,因此我们在设计的时候,可以在相关的业务表里关联流程实例表的主键,如下图的例子。
2.4. 画流程图
在画流程图之前,确保已经正确的安装了流程设计器。主要步骤如下: