【工作流基础】
工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使
在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或
者促使此目标的实现”。
工作流管理系统(WfMS,Workflow Management System)的主要功能是通过计算机技术的支持去定义、执行
和管理工作流,协调工作流执行过程中工作之间以及群体成员之间的信息交互。工作流需要依靠工作流管理系统来实
现。工作流管理系统是定义、创建、执行工作流的系统,应能提供以下三个方面的功能支持:
1) 定义工作流:包括具体的活动、规则等
2) 运行控制功能:在运行环境中管理工作流过程,对工作流过程中的活动进行调度
3) 运行交互功能:指在工作流运行中,WfMS与用户(活动的参与者)及外部应用程序工具交互的功能。
采用工作流管理系统的优点
i. 提高系统的柔性,适应业务流程的变化
ii. 实现更好的业务过程控制,提高顾客服务质量
iii. 降低系统开发和维护成本
工作流框架有:Jbpm、OSWorkflow、ActiveBPEL、YAWL等。
【开发环境准备】
此次学习接触的框架是JBPM,下面就看看利用JBPM需要准备哪些开发环境。
1. 添加JBPM的jar包。注意不要添加Servlet-api.jar和Junit.jar。因为junit是3.8.2版本的,与我们使用
的junit4.0版本冲突。
2. 添加jbpm.cfg.xml/logging.properties/jbpm.hibernate.cfg.xml配置
3. 初始化数据库,执行jbpm.*.create.sql。




【核心概念】
1. Process definition,流程定义:一个流程的步骤说明。如一个请假流程、报销流程等,是一个规则。
2. Process instance,流程实例:代表流程定义的一次执行。如张三昨天按请假流程请了一次假。一个流程
实例包括了所有运行阶段, 其中最典型的属性就是跟踪当前节点的指针。
3. Execution,执行:可以把一个流程实例看做一个根节点,而其下的子节点便可看作是执行。
【ProcessEngine与Service API】
我们与JBPM交互主要是通过它所提供的的services。而我们要想获取到这些services,就需要通过默认的配
置文件(jbpm.cfg.xml)生成Configuration去构建ProcessEngine。此工作流引擎是线程安全的,并且可以作为静态
成员。
JBPM包括6个Service,如下:
1. RepositoryService:管理流程定义
2. ExecutionS  ervice:管理执行的,包括启动、推进、删除Execution等操作
3. TaskService:管理任务的
4. HistoryService:历史管理(执行完的数据管理,主要是查询)
5. IdentityService:用户、组管理
6. ManagementService。
可通过processEngine.getService()获取Service,如RepositoryService repositoryService=processEngi-
ne.getRepositoryService();
【学习心得】
在.net阶段,就多多少少对工作流有些接触,所以对于工作流的一些理论知识和大体实现思路都还比较熟
悉。而这次学习接触到的java的jbpm这个框架,实现步骤也都大体相同,加上有了这个框架,给我们实现了很多东西
,感觉实现也是简单了许多。