java 如何获取Kogito自定义任务中的输出变量

eoigrqb6  于 2023-01-19  发布在  Java
关注(0)|答案(1)|浏览(142)

我在BPMN中创建了一个自定义任务,并编写了一个扩展KogitoWorkItemHandler的处理程序。输入值作为参数获得,结果作为Map<String, Object>推回。这在单个变量的情况下工作正常。
当使用多个自定义对象输入并期望多个自定义对象输出时,如何识别与输入相同的自定义对象对应的特定输出变量名称,以便正确分配?

oaxa6hgo

oaxa6hgo1#

为了求解,我们可以从当前运行的Node示例中选取ioSpec,然后获取需要用作结果的变量的DataDefinition

WorkItemNode node =(WorkItemNode) workItem.getNodeInstance().getNode();
        IOSpecification ioSpec = node.getIoSpecification();
        for(DataDefinition dataDefinition : ioSpec.getDataOutputs()){
            if(dataDefinition.getType().equals(fullyQualifiedName)){
                return dataDefinition.getLabel();
            }
        }

这里的fullyQualifiedName是自定义输入对象的名称,可以从输入workItem.getParameters().get(parameter).getClass().getName()中获取,循环遍历所有输出,找到输入的自定义类型对应的名称。

相关问题