新的项目中又要使用JBPM了,为了防止再次忘记所以在Blog里记点笔记。
工作流这个词是根据WorkFlow翻译过来的。它的基本意思就是一个工作的流动。我们也可以理解为一份工作在业务流程中的流转方向的控制就是工作流软件需要解决的问题。而传统的Java(或任何一种语言)的编码方式是Hard Code流程逻辑。Hard Code是无法快速响应业务流程的变化的。所以工作流框架给出一种可配置的方式来控制原本Hard Code的流程。
举例说明工作流的实现基本逻辑:developer递交一份Leave Application给HR需要经过Leader和Manager的sign.
那么基本流程就是:
Developer -----> Leader ----- (sign) ----> Manager ----- (sign) ----> HR
整个流程中Leave Application作为一个工作内容被传递到Leader, 之后到Manager,最后到HR。所以我们可以把参与者视为一个Node, 把Leave Application视为Context. 这个就是JBPM中最基本的顺序模式的实现方式。
正式开始使用JBPM
1. 首先下载JBPM的流程配置Eclipse插件,具体的操作见官网http://docs.jboss.org/jbpm/v3/gpd/installation.html。 这个插件主要用于以可视化图形界面操作processdefinition.xml这个工作流配置文件的。当然对于开发人员来说完全可以通过编辑这个XML来实现。
2. 创建第一个jbpm项目,这个我就懒得写了,自己看上面给出的官网Example。要说的就是基本的概念:
a) 每个工作流都要一个Start-state节点,和一个end-state节点
b) Node节点可以被认为是一种自动处理的工作点。当流程运行到Node节点时,流程不需要停止等待其他参与的操作。而是会运行完这个Node后直接的运行到下一个流程。通常Node节点与一个ActionHanlder绑定。
c) State节点就是简单的告诉整个流程等待,它与Node节点正好相反。通常用于等待外部提供的响应。再进行下个流程的工作。通常Node节点与一个ActionHanlder绑定。
d) Forks和Joins节点。Forks用于同步运行多个节点。而Joins用于统一所有的同步节点。
e) Decision节点表示根据条件执行某一条节点流。Decision节点的实现类需要继承DecisionHandler接口。
f) Task Node节点表示任务等待状态, 如果Task Node中没有指定task节点时,实现方式与Node相同。但只要定义了Task后,Task Node会等待所有的Task运行结束后才能进入下一个流程。
g) sub-process是调用另外一个process-definition。
h) super state表示模型化一组node节点。
之后会逐步的放入每个节点的使用方式和Example代码。
附件中是JBPM在Eclipse中的插件用来配置jbpm的XML的。