一、Fire WorkFlow核心
1.IPersistenceService
存储服务。Fire Workflow 缺省情况下使用hibernate 进行数据库存取。如果你的系统不
是使用hibernate,则重新实现该类,然后通过修改FireflowContext.xml 配置,将你的存储服
务实现类注入到RuntimeContext 中。
2.IDefinitionService
流程定义服务。该服务负责根据流程ID和版本号获得流程定义对象WorkflowDefinition。从该对象可以获得WorkflowProcess,即真正的流程定义。
Fire Workflow 缺省提供两种实现,
一种实现是org.fireflow.engine.definition.DefinitionService4FileSystem。该实现类从文件系统中获得流程定义对象,在开发阶段使用该类比较方便。该类从class path 中读取流程定义文件,因此你在项目中设计流程时, 推荐将流程定义文件置于/src 或者其子目录中。DefinitionService4FileSystem 忽略流程的版本,直接读取当前的流程定义文件。
另一个实现是org.fireflow.engine.definition.DefinitionService4DBMS。该实现类从数据库
表T_FF_DF_WORKFLOWDEF 中获得流程定义文件。因为表T_FF_DF_WORKFLOWDEF中保存了流程的版本号,因此该类在产品真正运行时使用。
在FireflowContext.xml 修改相关的配置即可实现这两个类的切换。
3.ICalendarService
日历服务。日历服务负责获取系统时间和计算TaskInstance 的ExpiredDate。缺省实现中,
系统时间是返回new Date(),也只考虑了周六、周日作为节假日的情况。你可以扩展该类获
取数据库时间作为系统时间,增加节假日配置。
4.IConditionResolver
转移条件解析器,用于计算转移条件中的EL 表达式的值。
5.ITaskInstanceManager
任务管理器,负责创建任务实例,缺省实现是BasicTaskInstanceManager。
6.BeanFactory
在1.0 中,增加了一个新的服务: bean factory。该服务负责创建各种javabean,例如:
进行工作项分派的时候,需要获得AssignmentHandler 的实例;执行ToolTask 的时候,需要
获得ApplicationHandler 的实例,等等。这些实例都是由bean factory 创建的。在1.0 中,这
个bean factory 的缺省实现是spring ioc 容器,即,将创建bean 的工作委派给了spring 。
注意:Bean factory 在上述的Engine 结构图中没有画出来。Fire workflow1.0 的引擎实
际结构如下,增加了bean factory。
二、Fire workflow 嵌入J2EE系统的详细步骤
将Fire Workflow 嵌入J2EE 系统的的步骤和第2 章描述的差不多。
首先,给项目增加Fire Workflow 支持。即,将相关的Jar 包扔到你的项目的WEB_INF/lib
中去,并创建相关的表结构
然后,配置FireWorkflow,主要配置内容如下。
1、将Fire workflow Engine 的一些hibernate 映射文件注册到sessionFactory 中
2、打开FireflowContext.xml,配置PersistenceService 的sessionFactory 属性
3、打开FireflowContext.xml,给runtimeContext bean 选择适当的definitionService;如
果你使用definitionService4FileSystem,则需要将流程定义文件的classpath 路径注入进去。
最后,编码调用Fire Workflow。