本文概述
- REST API
- 认证方式
- 远程Java API
- SOAP API
- 依赖-
- 命令Web服务
JBPM使用以下远程服务API-
文章图片
REST API 该API用于管理任务, 流程, 创建流程实例以及其他需要使用简单HTTP客户端库的操作。它提供以下领域的功能-
RuntimeEngine-它为用户提供流程实例创建, 流程实例查询和工作项操作。
历史记录-提供审核数据。
任务-提供任务操作和任务查询方法。
部署-提供部署管理操作。
认证方式 jBPM为REST API提供身份验证。调用后, REST服务操作将检查当前HTTP会话的基本身份验证用户ID。如果我们未被授权, 则会出现错误, 否则请设置用户ID和密码进行身份验证。这将返回以下响应-
<
deployment-unit>
<
groupId>
com.sample<
/groupId>
<
artifactId>
helloworld<
/artifactId>
<
version>
1.0<
/version>
<
kbaseName/>
<
ksessionName/>
<
strategy>
SINGLETON<
/strategy>
<
status>
DEPLOYED<
/status>
<
/deployment-unit>
远程Java API 如果我们不想手动创建HTTP请求以远程访问jBPM, 则可以使用Java API。 Java API是高级API。它使用REST或JMS API与远程引擎服务进行交互, 以为用户提供服务API类, 例如TaskService, KieSession等。 Java API的入口点是classRuntimeEngine, 我们可以使用如下所示的类RemoteRuntimeEngineFactory来访问它。
// the deploymentId identifies the KIE module
public static String deploymentId = "com.abc.sasa:1.0";
RemoteRestRuntimeEngineBuilder restEngineBuilder = RemoteRuntimeEngineFactory.newRestBuilder()
.addDeploymentId(deploymentId)
.addUrl(instanceurl).addUserName(user)
.addPassword(password);
RemoteRestRuntimeEngineFactory engineFactory = restEngineBuilder
.buildFactory();
// get the engine
RemoteRuntimeEngine engine = engineFactory.newRuntimeEngine();
// get the services
TaskService taskService = engine.getTaskService();
KieSession ksession = engine.getKieSession();
ProcessInstance processInstance = ksession.startProcess(processID);
现在, 我们必须访问KieSession, TaskService和AuditService远程接口。这些接口有助于使用纯Java代码执行远程调用, 并管理与远程jbpm服务器的HTTP连接。远程API必须具有以下maven依赖关系。
<
dependency>
<
groupId>
org.kie.remote<
/groupId>
<
artifactId>
kie-remote-client<
/artifactId>
<
version>
7.7.0.Final<
/version>
<
/dependency>
SOAP API SOAP代表简单对象访问协议。它是一种消息传递协议, 它允许程序在不同的操作系统上运行以使用HTTP协议交换信息。它允许我们客户端与服务器之间的通信。在此API中, 客户端可以向服务器发起请求, 然后服务器处理该请求并将响应返回给用户。
依赖- SOAP API的Maven依赖关系如下-
<
dependency>
<
groupId>
org.kie.remote.ws<
/groupId>
<
artifactId>
kie-remote-ws-common<
/artifactId>
<
version>
7.7.0.Final<
/version>
<
/dependency>
命令Web服务 在本节中, 我们现在将描述如何使用其SOAP API调用jBPM。我们的jbpm-remote-server测试项目SOAPTest jUnit测试类创建一个Web服务客户端, 然后启动一个新的流程实例。
【jBPM作为远程服务】JBoss BPM Suite提供了CommandWebService形式的SOAP接口。 Java客户端被转换为生成的CommandWebService类。由kie-remote-client模块生成的类充当SOAP的客户端接口。下面的测试代码中引用的CommandWebServiceClient类是由kie-remote-clientJAR中的Web服务描述语言(WSDL)生成的。
import org.kie.remote.client.api.RemoteRuntimeEngineFactory;
import org.kie.remote.client.jaxb.JaxbCommandsRequest;
import org.kie.remote.client.jaxb.JaxbCommandsResponse;
import org.kie.remote.jaxb.gen.StartProcessCommand;
import org.kie.remote.services.ws.command.generated.CommandWebService;
import org.kie.services.client.serialization.jaxb.impl.JaxbCommandResponse;
public JaxbProcessInstanceResponse startProcessInstance(String user, String password, String processId, String deploymentId, String applicationUrl) throws Exception {CommandWebService client = RemoteRuntimeEngineFactory
.newCommandWebServiceClientBuilder()
.addDeploymentId(deploymentId)
.addUserName(user)
.addPassword(password)
.addServerUrl(applicationUrl)
.buildBasicAuthClient();
// Get a response from the WebService:
StartProcessCommand cmd = new StartProcessCommand();
cmd.setProcessId(processId);
JaxbCommandsRequest req = new JaxbCommandsRequest(deploymentId, cmd);
final JaxbCommandsResponse response = client.execute(req);
JaxbCommandResponse<
?>
cmdResp = response.getResponses().get(0);
return (JaxbProcessInstanceResponse) cmdResp;
}