Enterprise JBoss JBPM:创建可扩展,标准兼容和经济高效的SOA环境

从即将到来的书籍,开源SOA摘录,解决服务组件架构(SCA),及其姊妹技术,服务数据对象(SDO),用于面向服务的架构,用于创建多协议,多语言服务基于可重用组件。

从即将到来的曼宁出版物书中的第5章和第6章和6章和6章摘录 开源SOA 介绍了JBPM作为业务流程管理(BPM)产品用于我们所称的产品 opensoa平台。 Integrate的开源应用程序的平台创建了一种功能强大的产品组合,可以帮助创建真正可扩展,标准兼容和经济高效的SOA环境。

MORE ON CIO.COM

红帽提升开源面向服务的架构

预算紧张?尝试开源SOA!

本文展开了以前的JBPM摘录,以探索JBPM中的一些高级功能。由于它只是一个摘录,摘要级别信息仅提供,但它应该为您提供产品提供的高级功能的良好风味。与本书不同,未提供详细的代码样本,描述和注释。

关于JBPM的最终章节涵盖了两个电源主题:企业功能和与Apache Tuscany的集成 服务组件架构 (SCA)和 服务数据对象 (SDO)。 JBPM的企业功能将在构建具有企业就绪异常处理和记录的非常复杂的业务流程时讨论尤为相关。将复杂的业务流程分解为子过程的能力与SOA尤为相关,因为它使您可以构建可以通过多个进程重用的更高级别的复合服务。与Apache Tuscany(SCA / SDO)的集成讨论了一种用于服务启用jBPM的方法,从而使其在SOA环境中成为一流的公民。

企业JBPM功能

JBPM的企业功能是在开始开发复杂的业务流程时,焦点本节的焦点是有益的。特别是,能够分解或组复杂的过程中的更有用的是更可管理的部分是有用的。我们将在JBPM中讨论两种完成此操作的手段: 售货机子过程。稍后,我们将描述如何管理由于该过程的一部分开发的任何自定义代码而产生的例外的例外。

虽然本身不​​是“高级”功能,但我们的焦点将转向描述如何以BeanShell脚本的形式使用在线代码,并通过提供的广泛日志记录功能来监视给定的流程实例。最后,我们调查了一个概念 异步持续,它使您能够将处理分发到JBPM企业正在运行的JBPM服务器。让我们首先看JBPM Muperstates。

售货机

售货机 在JBPM中只是一个节点的分组。例如,它们是有用的,当您想在逻辑上将一组节点组合在一起时。这可能是通过组织职责来描绘进程的阶段或组织职责。例如,员工终止过程通常是跨部门的,各种责任落在若干组织内。

OpenSoursoa71.jpg.
图1

在一个实例中,Muperstates用于将节点分组,在人力资源,金融和安全性之间。在JBPM图形过程设计器(GPD)中,将Muperstate节点存入JBPM工作区域/画布时,在您可以在其中添加节点和转换的地方创建边界区域。如您所见,这些边界区域可以调整大小,并在必要时发芽滚动条。您还可以将计时器关联到Muperstate(这需要Enterprise版本的JBPM,换句话说,应用程序服务器添加)。例如,在图1所示的场景中,您可以例如通知他们的团队工作尚未及时完成的​​人力资源管理器。因此,使用事件和定时器,通过提供视觉层次结构和分组,存在超出显而易见的优势。在概念中相关的是子过程,旨在提供更大的工艺组合物灵活性。

子过程

子过程 提供创建分解过程的手段。换句话说,您可以定义一个主进程,否则又调用子进程。子处理可以被视为过程中只是进程中的另一个节点。当子进程完成时,执行将在调用进程中继续执行。此功能使您可以创建更复杂的进程而不会过度复杂化视觉布局。其他优势包括创建可重用的流程模块,该模块可以由其他进程定义合并。在第1章中,我们讨论了SOA的一个重要方面是创建复合服务的能力。使用子进程,您可以通过创建可重用进程来实现此目的。这些可以单独运行,或者作为较大的管理次数运行。

在图1中,我们说明了用于员工终止的适度复杂的业务流程。在这种情况下,用于向图中提供一些逻辑结构的售货机。由于安全相关的节点是最涉及的,因此让我们将其破坏到一个单独的子过程中。

OpenSoursoa7-2.jpg.
图2

在图2中,命名为安全的节点表示新子进程(在节点图标中标识为<<Process State>>)。遇到此节点时,实例化了安全过程的新进程实例。

我们现在介绍了两种方法,帮助您组织和/或分解复杂的业务流程 - 建立企业策划的基本工具。企业解决方案的另一个重要方面是有效的异常处理。

异常处理

JBPM中的异常处理与人们可能想象的有点不同。在jBPM中管理异常时,您只处理由您创建的任何处理程序类结果导致的。它们不用于任何可能已从发动机本身的处理中产生的内部JBPM错误。因此,例如,如果要使用操作或赋值处理程序扩展功能,则可以使用我们将描述的异常处理技术陷阱和管理这些错误。

关于JBPM内的异常处理的常见误解的源是您是否可以使用此机制直接改变过程的流程。官方文件就此事而言相当矛盾。结果是:虽然技术上,你可以重定向[M],这被强烈劝阻。相反,正确的方法是设置一个过程实例变量,然后可以通过决策节点直接地流动。此外,您还可以通过JMS,电子邮件等发出警报或通知,以便有人可以执行补救措施。在本书的第7章中,我们说明了如何与过程变量进行串联使用的例外,以实现可能的欲望影响 - 对适当方的例外通知。

虽然本身不​​是一个高级功能,我们将接下来查看Beanshell脚本如何用于代替Java类以获取更快的开发。

豆壳脚本

有时有时创作jBPM业务流程,该流程必须诉诸为所需功能创建Java类似乎矫枉过正。当您只需要介绍几行编程逻辑时,这尤其如此。在这种情况下,您可以使用BeanShell脚本,这可能更方便,允许更快的应用程序开发。此外,BeanShell表达式也用于JBPM内的各种能力,例如在决策节点逻辑中。对于那些不熟悉的BeanShell的人,它是最早的Java脚本实现之一,最近已启动Java社区进程成为符合JSR的标准。它享有相当广泛的支持,并包含在各种应用中,作为Java的轻量级脚本替代品(访问 官方网站 有关更多详细信息和使用文件)。语法和用法密切镜像标准Java的镜像,因此Java开发人员通常可以快速拾取它。

大多数情况下都支持BeanShell脚本,其中可以使用Java处理程序类。因此,它们可以用于操作,事件或设置过程变量。此外,BeanShell脚本由决策节点使用。在这种情况下,它们是一个单行语句,必须评估为true或false(对于任何时间也是如此,也允许表达式属性也是如此)。

无论您是否使用BeanShell或Java扩展JBPM功能,不可避免地您希望能够记录和监视流程实例中发生的活动。这是JBPM审计记录是否到位。我们还在下一章中看到了如何使用此功能来生成事件流处理器可以消耗的事件,从而提供实时度量和监视您的JBPM进程实例。

审计日志记录

默认情况下,存在由于进程实例执行而产生的各种审核日志。统称,这些日志将为您完全了解进程实例中发生的每个活动。这个信息如何有益?例如,您可以将其加载到数据仓库中以进行报告和分析。或者,可能会在实时监视数据,以便业务活动监控仪表板等。与jbpm几乎所有方面一样,您也可以使用自己所需的功能扩展日志记录功能。例如,如果您想要动态过滤日志,您可能希望仅为您认为相关的内容进行动态过滤日志。详细说明如何实现这一摘录的范围,而是在本书第7章中的地址。

我们现在将通过查看异步延续来结束我们对JBPM高级功能的讨论,这使得通过服务器进程能够异步执行流程执行。

异步持续

您可能已经注意到练习迄今为止,当您发出信号执行进程实例时,它将在您正在运行的线程中继续执行,直到它遇到等待状态,例如状态或任务节点。此时,您可以考虑完成交易。虽然这一般不会导致任何问题,因为大多数事务在毫秒内完成,但有时可能毫无疑问。做任何情景都想到吗?使用传统的请求/回复消息交换,您有一个节点节点类型的节点节点类型,请使用传统的请求/回复消息交换执行Web服务调用。在那种情况下,节点将阻止并等待在接收到回复(或其超时)之前。如果预期立即响应,这可能对您的进程具有高度不良后果(可能是通过BPM过程被踢出的Web订单,并且用户正在等待订单标识符的响应)。幸运的是,已经有一个内置方法,可以直接在JBPM中管理此方案。它被称为 异步持续。如何通过一个简单的例子最佳说明该工作。

OpenSoursoa7-3.jpg.
图3.

In the process shown in Figure 3, let's assume nodes 1, 2, and 3 include Java action handlers which perform some external action. In nodes 1 and 2, those action handlers perform their work synchronously within the same transaction that the process is initiated (this is the default behavior). However, the 3rd node is specified using @async=true. What this means is that the node, and within it any Java action handlers, will be processed by an external command executor. Since node 3 is processed asynchronously, the transaction is completed and placed in a wait state (i.e., persisted) until the join node receives node 3's signal.

默认情况下,在应用程序服务器的上下文中运行的JBPM Enterprise版本,该版本配置为通过其构建方式支持异步连续性 工作executo.r。作业executor通过在运行jBPM Enterprise时自动配置的JMS队列收到其命令消息。在我们的示例中,这意味着JBPM作业执行程序将异步处理节点3.一旦完成,将执行Node 3的动作处理程序指令执行执行的连续。图7.6显示了在启动后的过程实例,其中节点1和2已经完成,现在在加入节点中等待节点3的结论。

OpenSoursoa7-4.jpg.
图4.

如图4所示,节点3的异步处理以三个步骤发生:1)将包括要执行的操作处理程序的JMS消息发送到JMS队列; 2)JBPM Enterprise Server的命令侦听器正在侦听提交给队列的新消息; 3)一旦收到消息,就会发送到命令执行程序以进行处理。命令执行程序将启动运行操作处理程序的新事务,并将向后转发执行。虽然未显示,但是,所有3个节点将完成,然后完成连接,并执行移动到最后完成进程实例。

有关的:
1 2 Page 1
第1页,共2页