开始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]) //升序排列 …

使用Gradle构建和应用AST转换

最近&#xff0c;我想在Gradle项目中构建并应用本地ast转换。 虽然我可以找到一些有关如何编写转换的示例&#xff0c;但找不到完整的示例来显示完整的构建过程。 转换必须单独编译&#xff0c;然后放在类路径中&#xff0c;因此其源代码不能简单地放在Groovy源代码树的其余部分…

7月17日每日一答

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

vi 常用命令

一、vi简介 vi编辑器是所有Unix及Linux系统下标准的编辑器&#xff0c;它的强大不逊色于任何最新的文本编辑器&#xff0c;这里只是简单地 介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本&#xff0c;vi编辑器是完全相同的&#xff0c;因此您可以在其 他…

Servlet基础(一)

JavaEE&#xff1a;企业级开发技术<一.基础概念>j2ee:jdk1.1--1.4 ----->> j2ee1.1 1.2 javaee:jdk--5,6,7 --->>javaee 5,6,7javaee与servlet,jsp Servlet:前后台传递数据&#xff0c;基于网络的HTTP请求的处理 实现需要借助web容器 J…

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;我们将…

Servlet - cookie、session、servletContext概述

1、cookie 在客户端的小纸条&#xff0c;存储在客户端一个servlet/jsp设置的cookies能被同一路径下面或者子路径下面的servlet/jsp读到&#xff0c;但子路径设置的cookies父路径读不到.添加cookie的方法&#xff1a; Cookie cookie new Cookie("aaa", "bbb&quo…

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

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来管理和验证应用程序的配置。 在本文中&…

unexpected AST node

hql语句错误&#xff0c;一般是比较明显的错误&#xff0c;仔细检查一下hql。转载于:https://www.cnblogs.com/chanedi/archive/2011/11/28/2265855.html

在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的方…

es6严格模式需要注意的地方

1.块级函数 "use strict";if (true) {function f() { } // 语法错误} es5中严格模式下禁止声明块级函数&#xff0c;而在es6的严格模式中可以声明块级函数&#xff0c;并可以在块级作用 use strictvar b true;if(b){function test(){console.log(我是块级函数)}test(…

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

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

APUE Chapter 1 - UNIX System Overview

Section 1.1. Introduction转载于:https://www.cnblogs.com/s7vens/archive/2011/11/29/2266984.html

md

# 1 常量和变量## 1.1 常量### 1.1.1 定义程序中固定不变化的值### 1.1.2 分类#### 1.1.2.1 字面值常量##### 1.1.2.1.1 整型常量- 二进制整数&#xff1a;以0B或0b开头&#xff0c;如&#xff1a;int a0B110; - 八进制整数&#xff1a;以0开头&#xff0c;如&#xff1a;int a…

使用Gradle消除开发重新部署

为了进行服务开发&#xff0c;我的团队最近从Grails转移到了Dropwizard框架。 但是&#xff0c;我真正从Grails堆栈中真正错过的一件事是自动重新加载&#xff1a;对源文件的任何更改都会在保存后立即显示在运行的应用程序中&#xff0c;而无需重新启动。 事实证明&#xff0c;…

js快速排序算法

算法&#xff1a; 1&#xff0e;先从数列中取出一个数作为基准数。 2&#xff0e;分区过程&#xff0c;将比这个数大的数全放到它的右边&#xff0c;小于或等于它的数全放到它的左边。 3&#xff0e;再对左右区间重复第二步&#xff0c;直到各区间只有一个数。 动画演示&a…