连接到工作项存储库时出错

Error connecting to work item repository

我在尝试连接到 jBPM 6.1 中的自定义工作项存储库时遇到此异常。0.Final workbench:

2015-04-15 17:03:07,712 ERROR [io.undertow.request] (default task-24) UT005023: Exception handling request to /jbpm-console/jbpmservicerepo: java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.Map
        at org.jbpm.process.workitem.WorkItemRepository.getWorkDefinitions(WorkItemRepository.java:38) [jbpm-flow-builder-6.1.0.Final.jar:6.1.0.Final]
        at org.jbpm.designer.web.server.JbpmServiceRepositoryServlet.doPost(JbpmServiceRepositoryServlet.java:110) [jbpm-designer-backend-6.1.0.Final.jar:6.1.0.Final]

导致此错误的 wid 文件是:

import org.drools.core.process.core.datatype.impl.type.StringDataType;

[ 
    [
        "name" : "CustomWorkItem",
        "description" : "Custom Work Item description",
        "parameters" : [],
        "results" : [
            "result_out" : new StringDataType(),
        ],
        "displayName" : "Custom Work Item",
        "icon" : "defaultservicenodeicon.png",
        "category" : "Service",
        "defaultHandler" : "com.example.CustomWorkItemHandler",
        "dependencies" : []
    ]
]

异常是由wid文件中的空parameters部分引起的,正如我们在jbpm-flow-builder sources中看到的:

            Map<String, DataType> parameterMap = (Map<String, DataType>) workDefinitionMap.get("parameters");
            if (parameterMap != null) {
                for (Map.Entry<String, DataType> entry : parameterMap.entrySet()) {
                    parameters.add(new ParameterDefinitionImpl(entry.getKey(), entry.getValue()));
                }
            }

删除空 parameters 部分 workbench 将加载存储库:

import org.drools.core.process.core.datatype.impl.type.StringDataType;

[ 
    [
        "name" : "CustomWorkItem",
        "description" : "Custom Work Item description",
        "results" : [
            "result_out" : new StringDataType(),
        ],
        "displayName" : "Custom Work Item",
        "icon" : "defaultservicenodeicon.png",
        "category" : "Service",
        "defaultHandler" : "com.example.CustomWorkItemHandler",
        "dependencies" : []
    ]
]