开始JBoss BPM流程的3种基本方法

技巧和窍门 这一集提示和技巧将帮助您了解根据需要启动流程实例的最佳方法。

规划项目可能包括流程项目,但是您是否考虑过可以启动流程的各种方式?

也许您的JBoss BPM Suite在您的体系结构中本地运行,也许您在云中运行,但是无论它在哪里,您仍然需要就如何启动流程做出明智的选择。

我们将在此处介绍三种可以最好地启动JBoss BPM流程的基本方法:

  1. UI仪表板
  2. RestAPI
  3. 客户端应用程序(API)
右上角的“构建和部署”按钮。

右上角的“构建和部署”按钮。

BPM Suite用户界面

为了完整性,我们不得不提到启动流程实例的功能是以JBoss BPM Suite仪表板工具内的按钮的形式存在的。

登录JBoss BPM Suite之后,您已经完成了项目开发,然后可以按以下步骤构建和部署BPM项目。

AUTHORING -> PROJECT AUTHORING -> TOOLS -> PROJECT EDITOR -> BUILD&DEPLOY (button)

下一步是以两种方式之一在流程管理透视图中启动流程实例。

1. PROCESS MANAGEMENT -> PROCESS DEFINITIONS -> start-icon2. PROCESS MANAGEMENT -> PROCESS DEFINITIONS -> magnifying-glass-icon -> in DETAILS panel -> NEW INSTANCE (button)
流程定义的右上角有开始图标。

流程定义的右上角有开始图标。

这两种方法都会导致流程实例启动,如果要将数据提交到BPM流程,则会弹出一个启动表单。

RestAPI

假设您打算在从多个可能的位置进行部署之后开始BPM流程,我们希望向您展示如何轻松地集成它们。

流程定义的详细信息视图具有“新实例”按钮。

流程定义的详细信息视图具有“新实例”按钮。

是从Web应用程序,移动应用程序启动流程还是为企业创建后端服务以用作流程的起点都没有关系。 公开的RestAPI提供了触发BPM流程的完美方法,可以在以下代码示例中进行显示。

此示例是一个非常简单的Rest客户端,为清楚起见,它将把可能传递给此类客户端的各种变量直接嵌入到示例代码中。 没有任何变量传递给正在启动的流程,为此,我们将在涵盖客户端应用程序的部分中提供一个更完整的示例。

它发送一个启动流程命令,并且不希望来自被调用的客户评估BPM流程的任何反馈,因为它是直通式流程(STP)。

public class RestClientSimple {private static final String BASE_URL = "http://localhost:8080/business-central/rest/";private static final String AUTH_URL = "http://localhost:8080/business-central/org.kie.workbench.KIEWebapp/j_security_check";private static final String DEPLOYMENT_ID = "customer:evaluation:1.0";private static final String PROCESS_DEF_ID = "customer.evaluation";private static String username = "erics";private static String password = "bpmsuite";private static AuthenticationType type = AuthenticationType.FORM_BASED;public static void main(String[] args) throws Exception {System.out.println("Starting process instance: " + DEPLOYMENT_ID);System.out.println();// start a process instance with no variables.startProcess();System.out.println();System.out.println("Completed process instance: " + DEPLOYMENT_ID);}/*** Start a process using the rest api start call, no map variables passed.* * @throws Exception*/public static void startProcess() throws Exception {String newInstanceUrl = BASE_URL + "runtime/" + DEPLOYMENT_ID + "/process/" + PROCESS_DEF_ID + "/start";String dataFromService = getDataFromService(newInstanceUrl, "POST");System.out.println("newInstanceUrl:["+newInstanceUrl+"]");System.out.println("--------");System.out.println(dataFromService);System.out.println("--------");}<...SNIPPED MORE CODE...>
}

这里的基本知识是指向起始 RestAPI调用的业务中心URL的设置。 在主要方法中,可以找到对startProcess()的方法调用,该方法将构建RestAPI URL并捕获从JBoss BPM Suite发送的数据答复。

要查看实现方法的详细信息,请在JBoss BPM Suite和JBoss Fuse Integration Demo项目中完整地参考该类。

测试间奏

构建和部署流程后,对其进行测试的一种简便方法是使用curl通过RestAPI将请求推送到流程。 这样的请求如下所示,首先是通用形式,然后是与上一个示例中使用的相同的客户评估项目的真实运行。

通用的RestAPI调用和正确的身份验证请求在curl中完成,如下所示:

$ curl -X POST -H 'Accept: application/json' -uerics 'http://localhost:8080/business-central/rest/runtime/customer:evaluation:1.1/process/customer.evaluation/start?map_par1=var1↦_par2=var2'

对于客户评估过程,使用curl调用启动过程,对我们的用户进行身份验证并收到JBoss BPM Suite的响应的完整周期应该提供以下输出。

$ curl -X POST -H 'Accept: application/json' -uerics 'http://localhost:8080/business-central/rest/runtime/customer:evaluation:1.1/process/customer.evaluation/start?map_employee=erics'Enter host password for user 'erics':  bpmsuite1!{"status":"SUCCESS","url":"http://localhost:8080/business-central/rest/runtime/customer:evaluation:1.1/process/customer.evaluation/start?map_employee=erics","index":null,"commandName":null,"processId":"customer.evaluation","id":3,"state":2,"eventTypes":[]}
我们的卷曲测试结果。

我们的卷曲测试结果。

如图所示,我们在流程实例透视图中看到流程实例已完成。

客户申请

启动JBoss BPM Suite流程实例的第三种也是最后一种方法是与注入一堆预定义的提交内容相结合,以填充报告历史记录,并且可以基于历史数据。

我们提供的大多数演示项目中都提供了此处显示的示例,但该示例取自Mortgage演示项目 。

该演示客户端正在使用静态数据线,一次将其插入到进程中。 通过一些小的调整,就可以从现有数据源中提取历史数据,并以这种格式注入所需数量的进程。 这也是对流程项目进行压力测试的好方法。

如上所示,我们将跳过会话和流程细节的设置,而是提供指向整个演示客户端类的链接,并将这些细节留给读者。

在这里,我们仅关注各个启动过程调用的外观。

public static void populateSamples(String userId, String password, String applicationContext, String deploymentId) {RuntimeEngine runtimeEngine = getRuntimeEngine( applicationContext, deploymentId, userId, password );KieSession kieSession = runtimeEngine.getKieSession();Map processVariables;//qualify with very low interest rate, great credit, non-jumbo loanprocessVariables = getProcessArgs( "Amy", "12301 Wilshire", 333224449, 100000, 500000, 100000, 30 );kieSession.startProcess( "com.redhat.bpms.examples.mortgage.MortgageApplication", processVariables );}

如您所见,最后一行是个人抵押贷款提交被推送到JBoss BPM Suite的位置。 如果检查课程的其余部分,您会发现多个条目是一个接一个地启动的。

我们希望您现在对启动过程并选择最适合您项目需求的方法有很好的了解。

翻译自: https://www.javacodegeeks.com/2014/09/3-essential-ways-to-start-your-jboss-bpm-process.html

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

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

相关文章

用asp.net编写冒泡排序法

这里写了一个冒泡排序的函数. int[] a newint[10] { 12,564,95,44,69,499,693,6746,6496,124}; for(inti0;i<a.Length;i) for(intj i1; j <10; j) { int min a[i]; if (a[i] > a[j]) //升序排列 …

7月17日每日一答

1 什么是闭包函数&#xff0c;闭包函数满足什么样的条件&#xff1f;请写一个常见的闭包函数。 所谓的函数闭包本质是函数的嵌套和高阶函数。我们来看看要实现函数闭包要满足什么条件&#xff08;缺一不可&#xff09;&#xff1a; 1)必须嵌套函数 2)内嵌函数必须引用一个定义在…

BZOJ1706奶牛接力跑

这个东西思路还是不错的。 解法就是把矩阵幂的加法改成取min&#xff0c;乘法改成加法就好&#xff0c;和floyed是一样的。这样的话&#xff0c;矩阵操作一次就相当于松弛了一次最短路。 建矩阵的过程也比较简单&#xff0c;可以离散化&#xff0c;当然下面有另一种更优秀的打法…

EJB 3.x:生命周期和并发模型(第2部分)

这是两部分系列的第二篇。 第一部分介绍了有状态和无状态EJB的生命周期以及并发行为。 在这篇文章中&#xff0c;我将介绍Singleton EJB 。 Singleton模式可以说是最常用&#xff08;有时被滥用&#xff01;&#xff09;的模式。 单吨又爱它&#xff01; Java EE使我们无需编…

MVC2中Area的路由注册实现

今天碰到了一个不可思议的bug&#xff0c;新增的controller中任何action都无法访问&#xff0c;都是返回404错误。一般这种错误要么是拼写错误&#xff0c;要么是不小心给action加了post属性&#xff0c;但是经过初步的排查&#xff0c;没有发现问题。而原有的controller中任何…

当Java 8 Streams API不够用时

Java 8与往常一样是妥协和向后兼容的版本。 JSR-335专家组可能无法与某些读者就某些功能的范围或可行性达成一致的发行版。 请参阅Brian Goetz关于为什么…的一些具体解释。 …Java 8默认方法中不允许“最终” …Java 8默认方法中不允许“同步” 但是今天&#xff0c;我们将…

父类作为方法的形参以及父类作为方法返回值

1、父类作为方法的形参 语句&#xff1a;修饰符 父类类型 方法名(){} 2、父类作为方法返回值 语句&#xff1a;修饰符 void/返回值类型 方法名(父类类型 形参名){} 代码例子&#xff1a; 动物类&#xff1a; /*** author Mr.Wang* 宠物类**/ public abstract class Animals {pr…

在Spring Boot中使用@ConfigurationProperties

在最近的博客文章中&#xff0c;我简短地介绍了如何在Spring Boot应用程序中配置邮件 。 要将属性注入配置中&#xff0c;我使用了Spring的Value注释。 但是Spring Boot提供了一种使用属性的替代方法&#xff0c;该方法允许强类型的Bean来管理和验证应用程序的配置。 在本文中&…

在Atlas服务器端实现中推荐使用Web Service而不是Page Method

English Version: http://dflying.dflying.net/1/archive/107_prefer_web_services_to_page_methods_in_atlas_server_side_implementation.html 我们可以用两种方式把一个服务器段方法暴露给客户端Atlas调用&#xff1a;Web Service和Page Method。我推荐使用Web Service的方…

简而言之,JUnit:另一个JUnit教程

为什么还要另一个JUnit教程&#xff1f; 对于Java世界中的开发人员而言&#xff0c; JUnit似乎是最受欢迎的测试工具 。 因此&#xff0c;难怪就此主题已经写了一些好书 。 但是我仍然经常遇到程序员&#xff0c;他们至多对这个工具及其正确用法都不太了解。 因此&#xff0c;…

CSS Grid网格布局全攻略

CSS Grid网格布局全攻略 所有奇技淫巧都只在方寸之间。 几乎从我们踏入前端开发这个领域开始&#xff0c;就不停地接触不同的布局技术。从常见的浮动到表格布局&#xff0c;再到如今大行其道的flex布局&#xff0c;css布局技术一直在不断地推陈出新。其中网格布局(grid)作为css…

内存泄漏–测量频率和严重性

这篇文章是我们开放文化的一部分-我们继续分享日常工作中的见解。 这次&#xff0c;我们窥视了我们价值主张的核心&#xff0c;即–寻找以下问题的答案&#xff1a; Java应用程序中多长时间发生一次内存泄漏&#xff1f; 内存泄漏有多大&#xff1f; 内存泄漏增长多快&#…

bootstrap-select控件全选,全不选,查询功能实现

先引入先在你的页面引入 bootstrap-select.css 和 bootstrap-select.js <link href"~/Content/plugins/bootstrap-select/bootstrap-select.min.css" rel"stylesheet" /> <script src"~/Content/plugins/bootstrap-select/bootstrap-select.…

Eclipse扩展点评估变得容易

对Eclipse扩展点进行编码的评估有些冗长&#xff0c;而且很少能自我解释。 最近&#xff0c;我开始忙于处理这个主题&#xff0c;我写了一个小助手&#xff0c;目的是减少通用编程步骤的样板代码&#xff0c;同时增加开发指导和可读性。 它原来是不容易找到一个表现的解决方案…

python之pyqt5-第一个pyqt5程序-图像压缩工具(2.0版本)-小记

python之pyqt5-第一个pyqt5程序-图像压缩工具(2.0版本)-小记 此篇为上一篇pyqt5图像压缩小工具改良版。因为比较简单&#xff0c;下面直接贴上代码。 效果图&#xff1a; # -*- coding: utf-8 -*-# Form implementation generated from reading ui file hellopyqt5.ui # # Crea…

开发人员需要了解的有关xPaaS的一切

最近&#xff0c;我一直在阅读有关Red Hat产品的很多文章&#xff0c;并且对云等也很感兴趣&#xff0c;对于我来说&#xff0c;更详细地研究Red Hat的云产品是很明显的。 Arun在今年4月对JBoss xPaaS进行了很好的概述&#xff0c;我认为可能不但应该给您一个概述&#xff0c;而…

算法与数据结构基础 - 堆(Heap)和优先级队列(Priority Queue)

堆基础 堆(Heap)是具有这样性质的数据结构&#xff1a;1/完全二叉树 2/所有节点的值大于等于(或小于等于)子节点的值&#xff1a; 图片来源&#xff1a;这里 堆可以用数组存储&#xff0c;插入、删除会触发节点shift_down、shift_up操作&#xff0c;时间复杂度O(logn)&#xff…

带有AOP和注释的Java方法记录

有时&#xff0c;我想记录&#xff08;通过slf4j和log4j &#xff09;方法的每次执行&#xff0c;查看其接收的参数&#xff0c;返回的内容以及每次执行需要多少时间。 这是我在AspectJ &#xff0c; jcabi-aspects和Java 6注释的帮助下进行的操作&#xff1a; public class F…

mysql binlog空间维护

默认情况下&#xff0c;mysql主从同步的binlog日志&#xff0c;会一直保存。 对于如果已同步好的数据&#xff0c;这显然比较浪费资源。 且如果生产环境磁盘太小&#xff0c;随时还会爆掉&#xff0c;所以很有必要作好binlog的空间维护。 以下操作&#xff0c;直接在master上操…

一键发布到Maven Central的方法

当我向Maven Central发布Java开源库jcabi-aspects的新版本时&#xff0c;我花费了30秒钟的时间。 甚至更少。 最近&#xff0c;我发布了0.17.2版本。 您可以在Github第80期中看到所有情况&#xff1a; 如您所见&#xff0c;我向Rultor发出了命令&#xff0c;它向Maven Central…