首页 > 解决方案 > 在 JBPM 中构建失败

问题描述

我在工作流中添加了一个脚本任务,并在 pom.xml 中添加了依赖项,如下所示。 在此处输入图像描述

并添加了 Maven 依赖项。

<dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20190722</version>
            <scope>provided</scope>
</dependency>

构建失败并出现错误:

[KBase: defaultKieBase]: Process Compilation error 令牌“导入”上的语法错误,抛出预期的 org.json.JSONArray 无法解析为

但是构建失败了。能否请你帮忙

在此处输入图像描述

脚本任务代码:

import org.json.JSONArray;
import org.json.JSONObject;

JSONArray objects = new JSONArray(Result);
        JSONArray finalArray = new JSONArray();
        for (int i = 0; i < objects.length(); i++) {
            JSONObject jsonObject = objects.getJSONObject(i);
            if (jsonObject.getString("ac_id").equals(acc_id)) {
                finalArray.put(jsonObject);
            }
        }

标签: jbpm

解决方案


在脚本任务中,我们从不导入类,每次调用类时都必须输入其完整路径。这不仅适用于库,即使您创建自己的类(在 jBPM 中称为数据对象),您也必须指定其完整的包路径。即使你想声明一个字符串值,你也必须把 java.lang.String name;

JSONArray所以在这里,你必须指定JSONObject每次使用它的路径。因此,您必须将代码替换为

java.lang.String resTmp = (java.lang.String) kcontext.getVariable("Result");
org.json.JSONArray objects = new org.json.JSONArray(resTmp);
org.json.JSONArray finalArray = new org.json.JSONArray();
for (int i = 0; i < objects.length(); i++) {
    JSONObject jsonObject = objects.getJSONObject(i);
    if (jsonObject.getString("ac_id").equals(acc_id)) {
        finalArray.put(jsonObject);
    }
}   

用于kcontext.getVariable()获取任务中变量的实际值,每次调用变量时都必须将其转换为请求的数据类型。


推荐阅读