jboss启动初始页面_JBoss BRMS最佳实践– BPM流程初始化层的提示

jboss启动初始页面

我过去发布过一些有关迁移策略的文章,仔细研究了流程层,并提供了一些有关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层中还有更多内容需要看。

流程实施层

这一层的重点是业务流程设计,流程中自定义操作的实现以及流程使用方式的扩展。 在流程设计和执行中采用标准BPMN2消除了BPM体系结构这一层的许多麻烦。 流程引擎被迫遵守并支持BPMN2标准,这意味着您在流程设计过程中只能做些限制。

知识会议

在JBoss BRMS BPM组件中,有一个有趣的事情是构建高度可扩展的流程体系结构。 这是知识会话(KS)的概念,特别是有状态知识会话(SKS)的概念。 创建它的目的是为了保存您的过程信息,包括数据和过程规范实例。

当运行基于规则的应用程序时,通常的过程是运行单个KS(注意,不是有状态的!),并且所有规则和数据都将利用该单个KS。 对于一个SKS和流程,我们希望每个流程实例都使用一个SKS。 我们可以将此功能捆绑到单个服务中,以允许并发并简化流程实例生命周期管理。 在此服务中,您还可以根据需要嵌入最终的同步或异步业务活动监视(BAM)事件生成器。
本文简要介绍了高级BPM架构,并列出了交互的各个层次。 对实现层进行了检查,以提供对该层内最佳实践的一些见解。 SKS的主要重点是我们建议如何在单个服务中使用,管理流程实例生命周期的方法。 在此之上,建议这是卸载BAM事件的一个很好的切入点。 在以后的文章中,流程交互层,流程存储库,工具,报告和BAM层中,还有更多内容需要关注。

流程交互层

访问业务逻辑,后端系统,后台系统,用户界面,其他应用程序,第三方服务或您的业务流程需要使用什么来完成工作,一个好的策略可以带来很多好处。 许多企业正在将这些交互与面向服务的体系结构(SOA)中的服务层隔离,该体系结构提供了灵活性,并且可以很好地扩展可能遇到的所有各种工作负载。 在这里看一下BPM层,我们只想提及其中的一些后端系统,作为如何在企业中优化流程项目的示例。

人工任务

JBoss BRMS BPM体系结构包括一个单独的人工任务(HT)服务器,该服务器作为实现WS-HT规范的服务运行。 可插拔没有什么可以通过在服务中公开WS-HT任务生命周期来阻止您在企业中托管另一台服务器的。 然后,应使用同步调用模型,该模型可以大大简化默认情况下利用HornetQ消息传递系统的标准产品实现。

报告中

您可以实施以提供出色的报告可伸缩性的第二项服务,我们称为业务活动监视(BAM)服务。 您将使用此服务来集中BAM事件,并使用它来将这些事件推送到可靠且快速的JMS队列中。 然后,可以使用一台单独的机器来托管这些JMS BAM队列,在不增加BPM引擎本身负载的情况下处理消息,写入一个单独的BAM数据库,通过批量写入进行优化,并且使用BAM信息的任何客户端都不会再次放入BPM引擎本身的任何负载。

结论

本文简要介绍了高级BPM架构,并列出了交互的各个层次。 对交互层进行了检查,以提供对该层内最佳实践的一些见解。 您可以创建几种服务来集中围绕人工任务和报告的活动。 通过集中人工任务交互,您可以为企业提供标准和可扩展的解决方案。 借助BAM服务,您可以将工作卸载到体系结构中的单独实体,从而保证这些事件的传递以及就流程报告活动而言的一致性能。 在以后的文章中,流程交互层,流程存储库,工具,报告和BAM层中,还有更多内容需要关注。

中文译本由Christina Lin提供。

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

翻译自: https://www.javacodegeeks.com/2012/12/jboss-brms-best-practices-tips-for-your-bpm-process-initialization-layer.html

jboss启动初始页面

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

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

相关文章

Python 学习笔记 多进程 multiprocessing

Python 解释器有一个全局解释器锁(PIL),导致每个 Python 进程中最多同时运行一个线程,因此 Python 多线程程序并不能改善程序性能,不能发挥多核系统的优势,可以通过这篇文章了解。 但是多进程程序不受此影响, Python 2…

Django 学习笔记第一课

Django web 框架介绍: MVC框架的核心思想 核心思想:解耦; 好处:可扩展性,向后兼容,低耦合,高内聚; 普通web结构框架MVC框架 M:model 主要用于数据库层次的封装; V:view…

记住要重置线程上下文类加载器

我很难思考与Java 加载有关的东西,而不是与类加载器有关的东西。 在使用应用程序服务器或OSGi的情况下尤其如此,在这些应用程序服务器或OSGi中,经常使用多个类加载器,并且透明地使用类加载器的能力降低了。 我同意OSGI Alliance B…

EntityFramework Code-First—领域类配置之DataAnnotations

本文出自:https://www.cnblogs.com/tang-tang/p/5510574.html 一、摘要 EF Code-First提供了一个可以用在领域类或其属性上的DataAnnotation特性集合,DataAnnotation特性会覆盖默认的EF约定。 DataAnnotation存在于两个命名空间里: System.Co…

Python 调试工具 PDB(Linux 环境下调试)

转载:http://blog.163.com/gjx0619126/blog/static/12740839320114995947700/ 在python中使用pdb模块可以进行调试 import pdb pdb.set_trace() 也可以使用python -m pdb mysqcript.py这样的方式 (Pdb) 会自动停在第一行,等待调试,这时你可以看看 帮助…

Ubuntu 更新源方法

安装完Ubuntu系统之后,面临的最主要的一个问题就是将apt安装源进行更新,因为在国内直接利用Ubuntu默认的安装源下载安装包速度慢,并且有的时候软件版本也比较旧。今天小编对Ubuntu更新源进行介绍:(这里针对阿里源和清华…

PAT Basic 1002

1002 写出这个数 (20 分)读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10​100​​。 输出格式&…

mybatis crud_MyBatis教程– CRUD操作和映射关系–第2部分

mybatis crud为了说明这一点,我们正在考虑以下示例域模型: 会有用户,每个用户可能都有一个博客,每个博客可以包含零个或多个帖子。 这三个表的数据库结构如下: CREATE TABLE user (user_id int(10) unsigned NOT NU…

MATLAB 排序函数(先按第一列排序(主排序)然后再按第二列排序(次排序))

利用 sortrows 函数实现MATLAB 先按第一列排序(主排序)然后再按第二列排序(次排序) A [8,9,6;5,5,2;2,5,8] sortrows(A)A 8 9 65 5 22 5 8ans 2 5 85 5 28 9 6

用PDB库调试Python程序

Python自带的pdb库,发现用pdb来调试程序还是很方便的,当然了,什么远程调试,多线程之类,pdb是搞不定的。用pdb调试有多种方式可选:1. 命令行启动目标程序,加上-m参数,这样调用myscrip…

数据操作

mysql> create table employee(-> id int primary key auto_increment,-> emp_name char(12) not null,-> sex enum(male,female) not null default male, #大部分是男的-> age int(3) unsigned not null default 28,-> hire_date date not null,-> post …

/usr/bin/ld: cannot find -l*** 这里***可以指lapack等

在Linux安装编译过程中有时会出现在如下形式的错误: /usr/bin/ld: cannot find -l***这里表示编译过程中找不到以下库名: lib库名(即***).so会发生这样的原因有以下三种情形: 系统没有安装相对应的lib 相对应的lib版本不对 lib&#xff0…

通过分区在Kafka中实现订单保证人

Kafka最重要的功能之一是实现消息的负载平衡,并保证分布式集群中的排序,否则传统队列中将无法实现。 首先让我们尝试了解问题陈述 让我们假设我们有一个主题,其中发送消息,并且有一个消费者正在使用这些消息。 如果只有一个使用…

破解栅栏密码python脚本

今天遇到一个要破解的栅栏密码,写了个通用的脚本 1 #!/usr/bin/env python2 # -*- coding: gbk -*-3 # -*- coding: utf_8 -*-4 # Author: 蔚蓝行5 # http://www.cnblogs.com/duanv6 e raw_input(请输入要解密的字符串\n)7 elen len(e)8 field[]9 for i in range(…

水稻已知os基因号,利用DAVIA进行GO功能富集分析

第1-5步: 已知水稻的基因(os),进行功能注释 第6步 第七步: 第八步: 第九步: 第十步: 第十一步:

二,八,十,十六进制之间转换的相应方法

int num1 Integer.valueOf(n,16); //16进制转换成10进制 Integer.toHexString(Integer i); //10进制转换成16进制 补充:Integer.toHexString(Integer i);该方法得出的字符默认为小写,如果想得到大写结果,则变为Integer.toHexString(Integer i…

IDF实验室-图片里的英语

原题: 一恒河沙中有三千世界,一张图里也可以有很多东西。 不多说了,答案是这个图片包含的那句英文的所有单词的首字母。 首字母中的首字母要大写,答案格式是wctf{一坨首字母} 加油吧少年!看好你哦~ writeup&#xff…

linux 终端调用MATLAB程序

linux 终端调用MATLAB程序 路径:/A/B/C/ 程序名称:xxx.m linux 终端调用MATLAB函数方法 cd /A/B/C/ matlab -nodisplay -nosplash -nodesktop -r "xxx;exit;"

2018-11-02 在代码中进行中文命名实践的短期目标

对中文命名的意义不再赘述, 请参看之前的对在代码中使用中文命名的质疑与回应. 去年中文命名实践的阻力和应对之后, 在一些小项目中继续实践了中文命名(Java/JS/Python等, 详见之前的专栏文章), 涉及领域不少但尚未形成明确的重点项目. 发现了一些在业务相关代码使用中文命名的…

Wireshark 命令行捕获数据

在 Wireshark 程序目录中,包含两个命令行捕获工具。这两个工具分别是 Dumpcap 和 Tshark。当不能以图形界面方式捕获数据时,可以在命令行使用 dumpcap 或 tshark 程序实施捕获。 一、使用 Dumpcap 捕获数据 执行 dumpcap -h 可以查看参数详情。 1、执行 …