JBoss BRMS最佳实践– BPM流程初始化层的提示

我过去发布过一些有关迁移策略的文章,仔细研究了流程层,并提供了一些有关jBPM的最佳实践 ,它们都涉及到BPM策略的非常具体的部分。 我想重新讨论最佳实践的主题,然后在智能集成企业级别上,我们讨论使用JBoss BRMS对您的业务流程进行控制。

介绍

首先,我们需要仔细研究景观,然后像洋葱一样剥开图层,仔细研究如何提供可扩展的BPM项目。 图1显示了我们需要集中注意力的几个组件层:

  • 流程初始化层
  • 流程实施层
  • 流程资料库
  • 业务用户和开发人员的工具
  • 控制台,报告和BAM仪表板
  • 流程交互层
图1:企业BPM格局。

本文将介绍流程初始化层,在此我将向您介绍一些最佳实践,围绕您,您的客户以及如何启动流程。

在流程存储库,工具,业务用户和设计流程的开发人员的帮助下,流程实现层是维护流程的地方。 在这里,您还将找到各种实现细节,例如特定领域的扩展,以涵盖我们项目中特定节点的类型。 稍后将介绍该层的最佳实践。

控制台,报告和BAM仪表板组件是项目中使用的扩展工具,用于提供可用于影响业务决策的业务价值或信息。 稍后将介绍该领域的最佳做法。


最后,在流程交互层中,您的流程将连接到各种形式的遗留系统,后台系统,服务层,规则系统甚至第三方系统和服务。 该领域的最佳实践将在以后的文章中介绍。

图2:入门。


流程初始化层

看一下如何初始化流程,我想向您提供一些我多年来在大型企业中看到的最佳实践。

似乎有一个主要主题是收集启动流程所需的客户,用户或系统数据,然后通过startProcess调用将其注入。 可以通过BRMS jBPM API调用,使用RESTful服务或通过标准Java Web服务调用将其嵌入到您的应用程序中。 无论您如何收集数据以初始化流程实例,都可能要考虑从一开始就如何扩展初始化设置。 通常,最初的项目设置时对未来没有太多考虑,因此某些问题没有被考虑在内。

顾客

此处定义的客户可以是提供初始过程启动数据的人员,系统或某些用户。 在图2中,我们对客户如何提供过程数据进行了高层次的研究,然后将这些过程数据打包成一个请求,以放入一个过程队列中。 然后,我们可以从队列中确定优先级,并让不同的机制获取这些流程请求,并使用提供的请求数据启动流程实例。 我们在此处显示了EJB,MDB和云,它们表示可以用来清空进程队列的任何调度方式。

Queue列

这些队列可以像数据库表一样简单,也可以像消息队列一样完善。 可以按照项目需要的任何方式进行设置,例如后进先出(LIFO)或先进先出(FIFO)。 使用消息队列的好处是,您可以通过轮询机制确定它们的优先级。

此设置的原因有两个。 首先,您通过不直接从客户界面启动流程实例来确保您保留了客户请求。 它将永远不会丢失到流程引擎。 其次,您可以对可能无法满足项目要求的未来流程进行优先级排序,例如必须在客户提交后10秒钟内开始的新流程请求。 如果将其放在需要花费一个小时才能处理的队列的底部,那么您就遇到了问题。 通过对队列进行优先级排序,您可以调整轮询机制以每次以正确的顺序检查适当的队列。

Java /云

图2中的Java图标代表您可能想用来处理进程队列的任何JEE机制。 它可以是EJB的,MDB的,您自己编写的调度程序或您想拿出的任何程序来拾取流程请求。

云图标旨在表示服务,您的软件可以使用这些服务来实际调用最终的startProcess方法,以初始化所请求的流程实例并将其传递给初始数据。 将与jBPM API的交互集中到一个服务中很重要,这样可以确保在API更改的情况下进行最少的工作,以便将来进行可能的版本迁移,并且如果您希望在将来的项目中进行扩展,以扩展与jBPM的服务交互。

结论

本文简要介绍了高级BPM体系结构,并列出了交互的各个层次。 在较大的企业BPM体系结构中,交互的第一层是初始化层,以提供对该层内最佳实践的一些见解。 讨论不是试图推动实现细节,而是退后一步,介绍在大型BPM体系结构中反复遇到的一些基本元素。 它涵盖了客户最初提交的处理请求,处理请求的排队以及以一致且可扩展的方式处理这些队列。 在以后的文章中,流程实现层,流程交互层,流程存储库,工具以及报告和BAM层中还有更多内容需要关注。

参考: JBoss BRMS最佳实践–来自我们的JCG合作伙伴 Eric D. Schabell的BPM流程初始化层的提示, 有关中间件,Linux,软件,骑行和其他新闻的思想…博客。


翻译自: https://www.javacodegeeks.com/2012/08/jboss-brms-best-practices-tips-for-your.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/371599.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

寒假作业二:汇总随笔

随笔一:解题思路随笔二:自学计划 转载于:https://www.cnblogs.com/mercuialC/p/6359997.html

跨站点脚本(XSS)和预防

如OWASP网站(https://www.owasp.org/index.php/Cross-site_Scripting_(XSS))所述,跨站点脚本(XSS)攻击的变种几乎是无限的。 在这里,我建议使用基于Servlet筛选器的解决方案来清理HTTP请求。 攻…

NoSQL入门第一天——NoSQL入门与基本概述

一、课程大纲 二、入门概述 1.为什么用NoSQL 单机MySQL的年代: 一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。      我们来看看数据存储的瓶颈是什么?        1.数据量的总大小 一个机器放不下时。(现…

随机森林特征个数mtry matlab,基于随机森林的特征选择算法

2.1 算法描述本文提出了一种基于随机森林的Wrapper特征选择方法RFFS,利用随机森林算法的变量重要性度量对特征进行排序,然后采用序列后向搜索方法,每次从特征集合中去掉一个最不重要(重要性得分最小)的特征,逐次进行迭代,并计算分类正确率,最终得到变量个数最少、分类正确率最高…

matlab循环读取变量,Matlab for 多个变量循环能不能这样啊 ,求教高手!!!!

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼for a0.003:0.0005:1; b0.002:0.0005:0.9; c0.001:0.0005:0.8;d0.0005:0.0005:0.7;E1a* E_Bone;E2b* E_Bone;E3c* E_Bone;E4d* E_Bone;G1a* G_Bone;G2b* G_Bone;G3c* G_Bone;G4d* G_Bone;%% Integration for cortical bone partsIn…

UVA - 10384 The Wall Pusher(推门游戏)(IDA*)

题意:从起点出发,可向东南西北4个方向走,如果前面没有墙则可走;如果前面只有一堵墙,则可将墙向前推一格,其余情况不可推动,且不能推动游戏区域边界上的墙。问走出迷宫的最少步数,输出…

JavaOne 2012:JavaOne技术主题演讲

Mark Reinhold从JavaOne 2012技术主题演讲开始。 他说,今年的版本将有所不同,因为它将使用大致相同的示例来说明Java的各个方面,而不是对Java的每个组件进行单独的单独介绍。 JavaFX团队的Richard Bair和Jasper Potts (并与FXExpe…

C语言结构体及函数传递数组參数演示样例

C语言结构体及函数传递数组參数演示样例 注:makeSphere()函数返回Sphere结构体,main函数中。调用makeSphere()函数,传递的第一个參数为数组,传递的数组作为指针。posted on 2017-07-30 18:42 mthoutai 阅读(...) 评论(...) 编辑 收…

Maven内部版本号插件–用法示例

假设我们需要向一些工件(jar,war等)添加内部版本号。 在这里,我想演示buildnumber-maven-plugin的用法。 这篇文章基于: http://mojo.codehaus.org/buildnumber-maven-plugin/usage.html http://www.site.lalitbhatt…

Python魔法方法(magic method)细解几个常用魔法方法(下)

接上文,再介绍最后几个常用的魔法方法。 关于__dict__: 先上个例子: class Test(object):fly Truedef __init__(self, age):self.age age __dict__魔法方法可以被称为系统,他是存储各分层属性的魔法方法。__dict__中,键为属性名…

AIX下RAC搭建 Oracle10G(六)dbca建库

AIX下RAC搭建系列 AIX下RAC搭建 Oracle10G(六)dbca建库 环境 节点 节点1 节点2 小机型号 IBM P-series 630 IBM P-series 630 主机名 AIX203 AIX204 交换机 SAN光纤交换机 存储 SAN T3存储 大纲流程例如以下: 第一部分&#xff1…

php string slice,substring()与str.slice()区别

当接收的参数是负数时,slice会将它字符串的长度与对应的负数相加,结果作为参数;substr则仅仅是将第一个参数与字符串长度相加后的结果作为第一个参数;substring则干脆将负参数都直接转换为0。测试代码如下:var test h…

JavaOne 2012:掌握Java部署

在吃完一次JavaClass 2012午餐会的意大利经典组合后,我前往希尔顿帝国宴会厅B观看了演示“掌握Java部署”。 来自Oracle的发言人是Mark Howe和Igor Nekrestyano Howe表示,部署团队的目标是帮助Java开发人员将其应用程序部署到所选平台。 他首先讨论了“功…

数组删除奇数编号的数据求最后的元素

//abcd...s 这19个字符循环106次成一个长度2014的字符串&#xff0c;然后删除第奇数个&#xff0c;得到小串&#xff0c;再删&#xff0c;最后的字符是&#xff1f; #define _CRT_SECURE_NO_DEPRECATE #include<stdio.h> #include<windows.h> #include<string.…

php 提高吞吐量,如何提高网站的吞吐量

吞吐量定义百科吞吐量是指对网络、设备、端口、虚电路或其他设施&#xff0c;单位时间内成功地传送数据的数量(以比特、字节、分组等测量)。以上的定义比较宽泛&#xff0c;定义到网站或者接口的吞吐量是这样的&#xff1a;吞吐量是指系统在单位时间内处理请求的数量。这里有一…

ubuntu下如何查找某个文件的路径

1.whereis 文件名 特点:快速,但是是模糊查找,例如 找 #whereis mysql 它会把mysql,mysql.ini,mysql.*所在的目录都找出来. 2.find / -name 文件名 特点:准确,但速度慢,消耗资源大,例如我想找到PHP.ini的准确位置,就需要用 #find / -name php.ini 3.locate 文件名 强力推荐的方…

事件的学习

1.鼠标单击事件( onclick &#xff09;: onclick是鼠标单击事件&#xff0c;当在网页上单击鼠标时&#xff0c;就会发生该事件。同时onclick事件调用的程序块就会被执行&#xff0c;通常与按钮一起使用。 <!DOCTYPE HTML> <html> <head> <meta http-equiv…

使用您自己的规则在Eclipse中自定义PMD

PMD是非常好的Java代码扫描程序&#xff0c;可帮助您避免潜在的编程问题。 它可以轻松扩展以满足您的需求&#xff0c;并且本文将为您带来与JPA的Enumerated注释用法相关的自定义PMD规则的简单示例。 在继续阅读之前&#xff0c;您应该检查我以前的文章之一-JPA-Enumerated def…

切换oracle用户impdp,Oracle 12c pdb使用expdp/impdp导入导出

12c推出了可插拔数据库&#xff0c;在一个容器cdb中以多租户的形式同时存在多个数据库pdb。在为pdb做数据泵导入导出时和传统的数据库有少许不同。1&#xff0c;需要为pdb添加tansnames2&#xff0c;导入导出时需要在userid参数内指定其tansnames的值&#xff0c;比如 useridus…

搭建mysql集群,使用Percona XtraDB Cluster搭建

Percona XtraDB Cluster提供的特性有&#xff1a;1.同步复制&#xff0c;事务要么在所有节点提交或不提交。2.多主复制&#xff0c;可以在任意节点进行写操作。3.在从服务器上并行应用事件&#xff0c;真正意义上的并行复制。4.节点自动配置。5.数据一致性&#xff0c;不再是异…