这一集提示和技巧将帮助您了解根据需要启动流程实例的最佳方法。
规划项目可能包括流程项目,但是您是否考虑过可以启动流程的各种方式?
也许您的JBoss BPM Suite在您的体系结构中本地运行,也许您在云中运行,但是无论它在哪里,您仍然需要就如何启动流程做出明智的选择。
我们将在此处介绍三种可以最好地启动JBoss BPM流程的基本方法:
- UI仪表板
- RestAPI
- 客户端应用程序(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