从配置中输入的JBPM服务任务分配情况

问题描述 投票:0回答:1

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

enter image description here

我研究了3天,但还是没有找到。

有没有什么选项可以像这样设置url值。

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

在上面的例子中,你可以看到ip-address和port应该是从配置文件或属性文件中读取的。

接下来的部分就是检查一切是否正常。

我可以实现这样的结果。

    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);

新编辑

也许我写的有点混乱,但是像这样,整个url需要在config中,而我只想从config中读取ip和port的值,并且像这样手动写入源码:http:/(我手动写的)+ip : port(从config中读取)update(我手动写的)。因此,正如我上面写的,我只想从config中读取ip和port的值,这就是为什么我把它们写成{http:/(我手动写的)+ip : port(从config读取的)update(我手动写的)。这就是为什么我把它们写成{ipVar}:{portVar}的原因。

新的编辑:谢谢你的详细解答,也许是我写得太混乱了,所以我把它写成了{ipVar}:{portVar}。也许我写的很混乱,所以我会解释一下这张图片。 enter image description here

你看我的观点是只从配置中获取ip和端口,而其他任何用户想写的东西,因为可以有其他的端点......。

例如:http:/{ip}:{port}createuserbashir 或https:/{ip}:8080asdupdate。

我想从config中获取ip和port作为变量,并在我需要的时候使用它,比如这个URL。

java jboss jbpm business-process-management drools-guvnor
1个回答
2
投票

你有两个解决方案。

  • 第一: 要创建自己的Rest任务,这是我们所说的WorkItem,它包括开发自己的任务,你消耗你的REST API的方式,你想要的,看看 此处 来了解一下我们如何创建WorkItem。
  • 第二种。你需要创建一个WorkItem(一个自定义任务),在服务任务休息之前调用它,它将只从配置文件中导入数据,并将导入的值分配到全局变量中。然后,在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);

在WorkDefinitions中。

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

然后,你去 变量定义 并定义一个名为 网址finalURL 字符串类型如下(法语)

enter image description here

之后,你画出你的任务并输出如下。

enter image description here

现在您的url从配置文件中被分配到一个变量url中,现在您需要将url和端点(ip:portupdate)连接起来。为此您需要添加一个脚本任务,在其中您将添加这行代码。

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

最后一步, 在你分享的截图中, 对于url, 你从combobox中选择名为finalURL的变量, 如下图所示

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.