来自配置的 JBPM 服务任务分配输入

JBPM Service Task assignments input from config

我有 JBPM 流程,我在其中添加了服务任务 Rest。在作业输入中,我想通过配置文件而不是直接在源字段中设置 url。

找了3天还是没找到

是否有任何选项可以像这样设置 url 值:

http://{ip-address}/{port}/update

正如您在上面的示例中看到的,应该从配置或 属性 文件中读取 ip 地址和端口。

The next part is just to check is everything okay.

我可以实现这样的结果吗:

    Config config = new Config();
    

    /** Output Variables in a HashMap ***/
    Map<String, Object> resultMap = new HashMap<String, Object>();
    resultMap.put("Result", msg); // ("name of variable", value)
    resultMap.put("url", "http://" + config.getProperty("ip") + config.getProperty("port") + "/update");
    manager.completeWorkItem(workItem.getId(), resultMap);

NEW EDIT

也许我写的有点混乱但是像这样整个url需要在配置中,我想要的只是从配置中读取的ip和端口并写入源像这样手动:http://(我手动写的)+ ip:端口(从配置中读取)/更新(我手动写的)。所以正如我上面所写的,我只需要配置中的 ip 和端口值。这就是为什么我把它们写成上面的 {ipVar}:{portVar}。

New edit: Thank you for the detailed answers. Maybe I am writing it confusing so I will explain this picture:

你明白我的意思是只从配置中获取 ip 和端口以及用户想要写的任何其他内容,因为可以有另一个端点...

例如: http://{ip}:{端口}/create/user/bashir 要么 https://{ip}:8080/asd/update

我想从配置中获取 ip 和端口作为变量,并在需要进行某些分配时使用它,对于这种情况 URL。

你有两个解决方案:

  • 第一个:要创建您自己的 Rest 任务,这就是我们所说的 WorkItem,它包括开发您自己的任务,您可以在其中以您想要的方式使用 REST API。看看 了解我们如何创建 WorkItem。
  • 第二个:您需要创建一个 WorkItem(自定义任务),在服务任务 Rest 之前调用它,它只会从配置文件导入数据并将导入的值分配给全局变量。然后,在 Service Task Rest 中,您必须在 Source 字段中输入每个输入的变量名称

我希望我的回答清楚且有帮助。我一直都是这样。

编辑:您必须如下更改代码

Config config = new Config();


/** Output Variables in a HashMap ***/
Map<String, Object> resultMap = new HashMap<String, Object>();
resultMap.put("Result", msg); // ("name of variable", value)
resultMap.put("url", "http://" + config.getProperty("ip") +":"+ config.getProperty("port"));
manager.completeWorkItem(workItem.getId(), resultMap);

在工作定义中:

[
    "name" : "WorkItemTest",
    "parameters" : [ //inputs
        "stringVar " : new StringDataType(),
    ],
    "results" : [ //outputs
        "url" : new ObjectDataType(),
    ],
    "displayName" : "WorkItemTest",
    "icon" : "defaultservicenodeicon.png"
]

然后,您转到变量定义并定义一个名为urlfinalURL[的变量=48=] String 类型如下(法语)

稍后,您绘制任务并输出如下:

现在您的配置文件中的 url 已分配给变量 url,现在您需要将 url 与端点 (ip:port/update) 连接起来.为此,您需要添加一个脚本任务,您将在其中添加这行代码:

kcontext.setVariable("finalURL",url+"/update"); //this will assign the url + "/update" to the variable finalURL

最后一步,在您分享的屏幕截图中,对于 url,您从组合框中选择名为 finalURL 的变量,如下所示