五、
面向图的程序设计
Jbpm的流程设计语言是面向图的,下面介绍一些面向图程序设计的概念。
1.
图的结构
1)
Node和transition
首先,图的结构由node和transition组成。每个transition都是有向的,所以node可以有一个leaving transition或者arriving transition。每个node是可以看成一项任务,每个node都有execute方法。Node的子类必须重载这个方法来为该类型的node实现特定的任务。
2)
Execution
在图结构中定义的execution模型和有限自动机还有uml状态图相似。一个execution(也可称为token,下面我们称其为令牌)具有对当前
node的一个引用。
Transition通过take方法可以将一个令牌(token)从源node传递到目标node。
当一个令牌到达一个node的时候,这个node就被执行(通过execute方法)。Node的execute方法也可以经行繁殖。繁殖在这里的意思是一个node可以将到达的令牌通过该node中的一个transition传向下一个node。
当一个node的execute方法没有传递令牌的时候,它就处于等待(wait)状态。同样的,当一个令牌在开始节点创建的时候,它就处于等待状态,等待一些事件(event)。令牌的一个事件可以触发令牌进行传递。如果事件是指向当前节点的一个leaving transition的话,那么令牌将沿着这个transition传递。令牌将不断的传递,知道遇到下个状态为wait的节点。
3)
流程定义语言
在wait状态下,一个令牌指向图中的一个node。此时,流程图和令牌都可以进行持久话,例如通过hibernate将其存入数据库。流程定义语言就是一个Node-implementation的集合。每个Node-implementation对应一个流程结构。
这里我们给出一个例子,该流程语言由4个process组成:一个start state,一个decision,一个task和一个end state。
我们可以通过上面定义的语言来具体描述一个流程,其中冒号前为该节点的描述,冒号后为该节点的具体类型:
当为该流程创建一个新的实例的时候,我们通过将令牌放入该过程的开始节点(start node)。当令牌没有接收到一个事件的时候,这个令牌将一直留在次节点中。
现在我们来看看当一个事件发生(事件点燃
)时,会出现什么情况。在初始情况下,我们通过调用令牌的event方法来点燃一个默认事件,它和默认transition相对应。Event方法可以找到默认的leaving transition,然后通过调用transition的take方法将令牌沿着该tranistion传递。
这个transition将令牌传递到decision节点并且调用该节点的execute方法。我们假设decision的execute方法通过计算后向令牌传递了一个yes事件。这将使令牌继续沿着’yes’ transition进行传递,之后令牌将到达doublieCheck节点。
我们假设doubleCheck任务节点的execute方法向checker的任务列表中添加一个实体,然后等待checher的输入,而并不将令牌继续传递。
现在令牌将在doubleCheck节点停留。
4)
Action
一个Acition同样也有一个execute方法。Action可以和event相联系。在节点被执行的时候有两个基本的事件被触发:node leave和node enter。
每一个event都可以和一系列action相联系,当事件被触发的时候,这些action也将被执行。
分享到:
相关推荐
Struts2是一个强大的Java web应用程序框架,用于构建和管理MVC(Model-View-Controller)架构的Web应用程序。它提供了一种优雅的方式来处理HTTP请求,实现了业务逻辑与表现层的分离,增强了代码的可维护性和可扩展性...
根据给定的文件信息,我们可以深入探讨JBPM-v3.2-userguide中涵盖的关键知识点,主要聚焦于JBPM(Java Business Process Management)的核心组件、功能、应用领域以及配置与部署等层面。 ### 一、JBPM简介 #### ...
而Spring是Java应用程序开发中的一个流行框架,提供依赖注入、面向切面编程以及对事务、数据访问等多种服务。 在这个整合中,我们首先需要理解Jbpm如何与Spring协同工作。Jbpm通过Spring的IoC(Inversion of ...
- `jbpm-api-4.4.jar`:公开Jbpm的API,供开发者在应用程序中调用,如启动流程、完成任务等。 - `jbpm-db-4.4.jar`:包含了Jbpm与数据库交互的组件,负责流程实例和相关数据的存储。 - `jbpm-log-4.4.jar`:提供了...
### JBPM学习资料step by step #### 重要知识点解析 **标题:** "JBPM学习资料step by step" - **解读:** 本标题指明了文档的主要内容是关于JBPM的学习指南,并且是以逐步(step by step)的方式进行讲解。 **...
1. **Spring**:这是一个轻量级的IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)框架,负责应用程序的依赖注入和事务管理,提供了一种松耦合的架构。 2. **Struts**:...
通过JPDL,开发者可以设计流程图,包括任务、决策点、事件和泳道等元素,然后将其转换为可执行的流程实例。这个`jar`文件包含了解析和执行JPDL文件所需的类和库。 **SSH整合开发**:SSH是指Spring、Struts和...
jbpm是一个开源的工作流管理系统,它允许开发者设计、执行和管理业务流程。jbpm提供了图形化的流程建模工具,支持BPMN2标准,可以方便地定义复杂的业务流程。在这个demo中,你可以看到jbpm是如何处理流程实例的创建...
开发者可以通过jbpm-gwt-console(通常包含在webjbpm中)来设计流程图,并将其转换为XML格式的流程定义文件(.bpmn20.xml)。这些文件随后可以在应用程序中加载,供用户启动和跟踪流程实例。 在这个例子中,webjbpm...
JBPM是一种用于构建业务流程管理(BPM)应用程序的开源框架。它支持BPMN 2.0标准,提供了流程定义、执行监控、任务管理和事件处理等功能。 #### 四、整合难点及解决方案 整合SSH和JBPM的过程中,可能会遇到以下关键...
- **jBPM API概述**:提供了面向对象的API,用于创建、执行和管理流程实例。 - **Knowledge Base**:用于加载和存储流程定义的中心。 - **Session**:执行流程的主要接口,负责流程实例的生命周期管理。 - **事件...
Spring以其强大的依赖注入(DI)和面向切面编程(AOP)功能,为应用程序提供了灵活的基础架构;Struts2作为MVC模式的实现,提供了高效的页面控制器和视图管理;而JBPM则是一个流程管理平台,用于设计、执行和管理...
面向图的程序设计 第五章 发布 第六章 永久化 第七章. 流程建模 第八章 上下文 第九章 任务管理 第十章 调度程序 第11章 业务日历 第12章. 记录 第13章. jBPM 流程定义语言 (JPDL) 第14章 安全 第15章. TDD适合工作...
jBPM 3.1 是一个基于 Java 的工作流引擎,其核心特性在于通过图形化设计界面以及灵活的编程模型来帮助开发者构建复杂的业务流程应用。此外,它还提供了强大的持久化机制,支持多种数据库,以及高度可定制化的事件...
工作流是一种组织和自动化业务流程...总结来说,jBPM作为工作流管理系统,为企业提供了强大的工具来设计、执行和管理复杂的业务流程。通过理解和应用jBPM,企业可以更高效地优化其运营,实现流程自动化,提升业务效率。
- **流程建模**:通过图形化工具如Jbpm Workbench,用户可以创建和编辑流程图,直观地表示业务流程。 - **规则管理**:Drools工作台允许用户创建和管理业务规则,提供规则测试和验证功能。 - **监控和分析**:...
5. **流程模型设计**: JBPM使用BPMN 2.0标准进行流程建模,可以通过JBPMP Designer或Eclipse BPMN2插件创建流程图。这些流程定义会被编译成XML文件(.bpmn2),然后在运行时被加载到JBPM引擎。 6. **任务和工作流...
#### 五、面向图的程序设计 ##### 5.1 图结构 - jPDL使用基于图的结构来表示业务流程,每个节点代表一个步骤,边则表示流程的流向。 ##### 5.2 执行 - 描述了如何根据图结构执行流程,包括分支、循环等复杂逻辑的...