您好,欢迎访问三七文档
应用开发学习工作流:工作流管理联盟(WFMC)给出定义:工作流是一类够完全或者部分自动执行的业务过程,它根据一系列过程规则、文档、信息或任务能够在不同的执行者之间进行传递与执行。工作流管理系统:是一个软件系统,它完成工作流的定义和管理,并按照在计算机中预先定义好的工作流逻辑推进工作流实例的执行。JBPM:是基于java实现的流程业务处理框架(JavaBusinessProcessManagement)。是一个工作流引擎,一个可扩展,灵活的能够实现工作流/业务流程管理的企业级开发框架,提供了流程定义,流程部署,流程执行,流程管理等功能。它能够支撑企业的流程性业务应用,实现流程的自动化。1,嵌入式工作流引擎jbpm是完全支持嵌入式引用的业务流程开发框架,可以在事物处理,数据持久化等各个方面与业务应用程序进行灵活的集成。开发者可以把jbpm4框架作为业务流程管理的基础,在此基础上开发自己独特的业务流程管理模块和功能。2,可拔插的体系架构JBPM采用了模块化的架构设计,采用IOC的设计理念,各模块,例如持久化,事物处理,身份认证,日志服务等,都可以选择模之间可以比较方便地解除耦合或替换不同的实现块实现。3,易扩展的流程语言JBPM框架内置的流程定义活动,包括start,task,fork,join和decision等,是构建完整业务流程所必须的组成部分,他们提供了可以将业务逻辑JAVA代码和业务流程编排无缝衔接的绑定机制。流程定义:对业务过程步骤的描述。在jbpm4中表现为若干“活动”节点通过“转移”线条串联。流程实例:流程定义在运行时特有的执行例程。可以把流程定义理解为javaClass定义,而流程实例则可以理解为javaClass定义实例化生成的Javaobject对象。流程引擎对象–org.jbpm.api.ProcessEnginejbpm4中所有的ServiceAPI都是ProcessEngine中获得。ProcessEngine则是由Configuration类构建的,既工作流引擎根据配置产生。ProcessEngine是线程安全的,在应用中所有的线程和请求都可以使用同一个ProcessEngine对象ProcessEngineprocessEngine=Configuration.getProcessEngine();去CLassPath下寻找jbpm.cfg.xml文件自动读取。ProcessEngineprocessEngine=newConfiguration().setResource(“my-jbpm-configuration-file.xml”).bulitProcessEngine();指定位置的Jbpm配置的文件1,RepositoryService---流程资源服务接口,提供对流程定义的部署,查询,删除等操作。2,ExecutionService---流程执行服务接口,提供启动流程实例,“执行”推进,设置流程变量等操作。3ManagementService---流程管理控制服务的接口,在jbpm4.3中只提供异步工作(job)相关的执行和查询操作。4,TaskService---人工任务服务接口。提供对任务(Task)的创建,提交,查询,保存,删除等操作。5,HistoryService---流程历史服务接口。提供对流程历史库(已完成的流程实例)中历史流程实例,历史活动实例等记录的查询操作。还提供诸如某个流程定义所有活动的平均持续时间,某个流程定义中某转移的经过次数等数据分析服务。6,IdentifyService---身份认证的服务接口。提供对流程用户,用户组,以及组成关系的相关服务start(开始活动):整个流程的开始节点,所有的流程实例从这里开始。在一个流程定义里必须有一个start活动,start活动必须有一个流出转移(transition)state(状态活动):State节点也叫手工节点,进入到这种节点,整个流程的执行就会中断。直到系统外参与者发起继续执行的命令,业务程序实例的执行才能够继续下去。decision(判断活动):一个decision用以决定在多个执行路径中哪个才可以被执行。Decision可以拥有多个流出转移,当流实例到达decision活动时会根据最先匹配成功的条件自动地通过相应的流出转移。Fork-join(分支-聚合活动):当流程需要并发执行的时候,就需要用到fork-join活动的组合,fork活动可以使流程在一条主干上出现并行的分支,join活动则可以使流程并行分支聚合成一条主干End(结束节点):对于每一个流程定义都会有一个结束节点,与开始节点对应Task(人工任务活动):一般用来处理及人机交互的活动1,任务的分配者:简单的将一个任务分配给一个指定用户2,任务的候选者:任务分配给一组候选用户,组中的用户可以接受并完成任务。3,任务的分配处理器:编码计算任务的分配者和候选者。(需实现AssignmentHandler接口)4任务泳道:实际业务中,经常会遇到一种场景,流程定义中的多个任务需要被分配或候选给同一个用户群,我们可以统一将这个“同一用户群”定义为一个泳道。5,任务变量:任务可以读取(输入),更新(输出)流程变量。任务可以定义任务自有的变量,即任务变量。6,任务邮件提醒:1)当一个任务出现在某人的任务列表中时立即提醒。2)指定时间间隔进行反复提醒。7,任务表单:是把任务展现给用户的最常用的客户端应用方式。Sub-process:当流程复杂到一定程度的时候,可以按照一定规则把业务拆分为若干个子流程,这样业务模块之间才能明晰易于划分。在运行到子流程活动时,工作流引擎将其创建一个子流程实例,然后等待直到其完成,当子流程完成实例后,流程就会流向下一步。Parameter-in,Parameter-out.自定义活动:可调用自己的一套自定义活动行为。Java—java程序活动Script-–脚本活动Hql–-Hibernate查询语言活动Sql–结构化查询语言活动Mail—邮件活动1,事件监听:我们可以使用on元素来为事件监听器分组并指定事件,on元素可以嵌入到Process元素或者process元素下的任何流程活动中2,事件传播:当通过指定事件监听器的传播属性propagation=“enabled”/“true”则该事件监听器可以对其监听元素的所有子元素起作用。Pvm是一个特定可执行的图形化开发框架。基于PVM规范的流程定义可以实例化为“执行流”,它拥有可以表现为图形的数据结构。Pvm将流程定义从具体的活动中剥离出来。Pvm仅负责从流程的一个活动到下一个活动中提取流程的执行上下文,而将活动的具体行为委派给可定制,可插拔的Java类,并提供一组活动行为的API用来作为PVM的活动行为实现代码接口。JPDL流程定义语言及其相关的解释代码仅仅是一系列流程活动行为的实现和解析器。流程虚拟机带来的好处是多方面的:第一也是最重要的是jBPM4支持了BPMN。第二是实现了基于流程组件的流程引擎,流程图(语言)与实现解耦,我们使用通用编程语言实现节点运行期行为,称之为流程组件,通过将流程图与流程组件挂接,避免了图的损耗。第三个好处是我们可以定义领域特定语言(DSL),在特定的应用里,采用DSL约定并隐藏了大部分的技术细节可能做到业务人员对执行流程的直接修改,例如企业文档管理里的审批流程。可以把PVM看做类似JVM(java虚拟机)和JPA(持续化应用接口)之类的引擎或标准:1)实现了PVM的接口规范,PVM的流程虚拟机就可以通过这些接口执行你设计的任何业务流程定义。2)pvm制定了一套Java接口标准(jpdl)供您根据需要实现。就像Hibernate对JPA标准实现一样在jBPM4中终于加入了这个功能,它是在活动(或任务)结束时,直接将数据归入历史库。其次,在将运行期的实例归入历史库时,并不是将所有数据都进行了copy,这就造成了在历史库中丢掉了一些运行期的数据属性。还有任务历史库中没有针对taskcandidates参与模式的任务拾取时间的记录导致无法做绩效统计等。Jbpm项目从设计上没有考虑“回退”,“取回”,“会签”,“委派”等业务场景。a)轻巧,使用Hibernate实现b)扩展性好,支持各种事件和节点的扩展,c)工作流原理和实现简单,代码容易维护d)支持变量e)支持子流成a)流程图形画定义工具太弱b)没有图形画的流程监控工具c)复杂的流程定义需要自己实现接口d)没有相应的服务
本文标题:JBPM4 工作流
链接地址:https://www.777doc.com/doc-1981 .html