• 1. JBPM 5/27/2013
  • 2. 定义1组成2实例安装3实例分项说明4
  • 3. 定义JBPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。 JBPM是公开源代码项目,目前最新版本5.4。 JBPM通过维护一个定义了流程目标和执行顺序的流程表支持对业务流程的建模。 BPMN,业务流程建模与标注(Business Process Model and Notation) 描述基本的BPMN符号,包括这些图元如何组合成一个业务流程图。
  • 4. 定义业务流程图由一系列的图形化元素组成。 这些元素简化了模型的开发,且业务分析者看上去非常熟悉。这些元素每个都有各自的特性,且与大多数的建模器类似。比如,活动是矩形,条件是菱形。 这里提供标记类别中的一小部分,以便业务流程图的读者可以简单地识别出元素的基本类型从而理解图形。以下是四种基本的类型: 1)流对象 2)连接对象 3)泳道 4)人工信息
  • 5. 组成Core serviceCore EngineHisotry LogTask ServiceJBPM ConsoleGuvnor RespositoryEclipse ModelerWeb DesignerForm Builder
  • 6. ◆核心引擎是项目的核心并且是必须的。◆ 历史日志,用来记录所有流程的当前和先前的状态有关的信息。◆ 人工服务,如果人工角色参与了流程,将会管理人工服务的生命周期。◆ guvnor知识库是可选组件,用来定义保存业务流程。◆ jbpm基于web的控制台。允许业务用户管理流程,任务列表和查看报告。组成
  • 7. 实例安装略。
  • 8. 实例分项说明Jbpm APIKnowledge base: StatefulKnowledgeSession KnowledgeRuntimeLoggerFactoryBpmn:使用连线将不同的节点连接起来。 流程的主要属性:
  • 9. 实例分项说明Id:流程的唯一标识。 Name:流程的显示名称。 Version:流程的版本。 Package:流程被定义所在的包。 Variables:流程定义中用来保存值的变量。 Swimlanes:泳道。用来分配人工服务。
  • 10. 实例分项说明开发说明: 如果需要新建业务流程并且使用和流程引擎的连接,需要建立一个会话。会话需要一个knowledge base 的引用,包含了所有流程定义的引用,具体关系如下图:Knowledge baseStatefulknowledge sessionProcess definitionProcess instance
  • 11. Knowledge base:实例分项说明private static KnowledgeBase readKnowledgeBase() throws Exception { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(ResourceFactory.newClassPathResource("Evaluation.bpmn"), ResourceType.BPMN2); return kbuilder.newKnowledgeBase(); } JBPM 允许创建一个knowledge base,本对象包含所有的流程定义,支持多种创建流程方式(如通过流对象,文件系统等)。
  • 12. Statefulknowledge session:实例分项说明private static StatefulKnowledgeSession createKnowledgeSession(KnowledgeBase kbase) { StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); HornetQHTWorkItemHandler humanTaskHandler = new HornetQHTWorkItemHandler(ksession); humanTaskHandler.setIpAddress("127.0.0.1"); humanTaskHandler.setPort(5153); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", humanTaskHandler); return ksession; }
  • 13. 实例分项说明在创建Knowledge Base的基础上,可以创建会话链接执行引擎。可以通过会话的相关方法启动流程,如: Map params = new HashMap(); params.put("employee", "krisv"); params.put("reason", "Yearly performance evaluation"); ksession.startProcess("com.sample.evaluation", params);