首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用NodeJs实现Red hat流程自动化管理器(RHPAM)

如何使用NodeJs实现Red hat流程自动化管理器(RHPAM)
EN

Stack Overflow用户
提问于 2019-08-10 19:02:32
回答 2查看 682关注 0票数 0

我是业务流程自动化的新手,正在尝试为我的Node.js应用程序实现使用Red hat流程自动化管理器。

请帮助我解决这个过程,或者如果有任何Node.js源代码可用

EN

回答 2

Stack Overflow用户

发布于 2019-08-13 00:55:02

您需要使用REST API,您可以在其中找到在服务器上运行的swagger文档。例如http://localhost:8080/kie-server/docs。您必须创建一个流程并部署它,然后从您的应用程序控制它。

我没有javascript示例,但我有一个Java语言的示例,用于jBPM团队使用的常见Evaluation流程示例。也许这对你有帮助。

代码语言:javascript
运行
复制
private void runjBPMApi() throws IOException {
    RestTemplate restTemplate = new RestTemplate();
    HttpHeaders headers = new HttpHeaders();
    headers.add("content-type", "application/json");
    headers.add("accept", "application/json");

    HttpHeaders headersMary = new HttpHeaders();
    headersMary.addAll(headers);
    headersMary.add("Authorization", "Basic " + new String(Base64.getEncoder().encode("mary:mary".getBytes())));

    HttpHeaders headersJack = new HttpHeaders();
    headersJack.addAll(headers);
    headersJack.add("Authorization", "Basic " + new String(Base64.getEncoder().encode("jack:jack".getBytes())));        

    HttpHeaders headersJohn = new HttpHeaders();
    headersJohn.addAll(headers);
    headersJohn.add("Authorization", "Basic " + new String(Base64.getEncoder().encode("john:john".getBytes())));        

    ObjectMapper mapper = new ObjectMapper(); 

    String startEval = "{\"employee\":\"jack\"}";
    HttpEntity<String> requestEval = new HttpEntity<>(startEval, headersMary); 
    ResponseEntity<String> evaluation = 
        restTemplate.exchange(serverRestUrl+"/containers/"+containerId+"/processes/Evaluation.Evaluation/instances",
            HttpMethod.POST, 
            requestEval, String.class );

    Long processId = Long.parseLong( evaluation.getBody() );
    log.info("Started Process Instance: " + processId.toString());

    String selfEval = "{\"selfeval\":\"did lots of work\"}";
    performUserTaskApi(restTemplate, headersJack, selfEval, false, mapper);
    String pmEval = "{\"pmeval\":\"Projects Done\"}";
    performUserTaskApi(restTemplate, headersJohn, pmEval, true, mapper);
    String hrEval = "{\"hreval\":\"No Incidents\"}";
    performUserTaskApi(restTemplate, headersMary, hrEval, true, mapper);

    HttpEntity<String> requestVariables = new HttpEntity<>(headersMary);
    ResponseEntity<String> variables = 
        restTemplate.exchange(serverRestUrl+"/containers/"+containerId+"/processes/instances/"+processId+"/variables/instances",
            HttpMethod.GET, 
            requestVariables, String.class );
    JsonNode variableTree = mapper.readTree(variables.getBody());
    Iterator<JsonNode> variablesItr = variableTree.findValue("variable-instance").elements();
    while ( variablesItr.hasNext() ) {
        log.info( variablesItr.next().toString() );
    }
}

private void performUserTaskApi(RestTemplate restTemplate, HttpHeaders userHeaders, String params, boolean claim, ObjectMapper mapper) throws IOException {
    HttpEntity<String> emptyEntity = new HttpEntity<>(userHeaders);
    HttpEntity<String> paramsEntity = new HttpEntity<>(params, userHeaders);
    ResponseEntity<String> potOwners = 
        restTemplate.exchange(serverRestUrl+"/queries/tasks/instances/pot-owners",
            HttpMethod.GET, emptyEntity, String.class );

    JsonNode evalTree = mapper.readTree(potOwners.getBody());
    Long taskId = evalTree.findValue("task-id").asLong();

    if ( claim ) {
        restTemplate.exchange(serverRestUrl+"/containers/"+containerId+"/tasks/"+taskId+"/states/claimed",
            HttpMethod.PUT, emptyEntity, String.class );
    }
    restTemplate.exchange(serverRestUrl+"/containers/"+containerId+"/tasks/"+taskId+"/states/started",
        HttpMethod.PUT, emptyEntity, String.class );

    restTemplate.exchange(serverRestUrl+"/containers/"+containerId+"/tasks/"+taskId+"/states/completed",
        HttpMethod.PUT, paramsEntity, String.class );

}
票数 0
EN

Stack Overflow用户

发布于 2019-08-13 20:02:08

您可以使用Business Central对您的项目进行建模并将其部署到KIE Server上(通常您不需要在这里使用应用程序,Business Central功能就足够了。或者,您可以在首选的IDE中创建项目,然后手动将其部署到KIE Server。

一旦您的项目完成并部署到KIE Server上,您就可以使用Kie Server API来控制您的项目及其资产(如业务流程)。你可以编写你的应用程序来控制你在KIE Server上的项目,使用任何语言和技术,如Node.JS或移动应用程序。

使用K. Nicholas http://localhost:8080/kie-server/docs提供的链接访问KIE Server的REST API文档。

下面是一个这样的API示例:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57441534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档