【发布时间】:2019-08-01 07:17:13
【问题描述】:
我在 JBPM 中创建了一个工作流,其中的业务流具有规则和人工任务。工作流接受一个流程变量,它是一个客户对象(类名 Quote)。如果我使用 Kie Workbech 启动工作流程,它可以正常工作,但是当我尝试从 Client API 的 REST API 启动流程时,会向我发送错误
" "请求 URI 时出现意外的 HTTP 响应代码
错误代码:500,消息:\“无法创建响应: [QuoteManagedRules.quoteManagedRules:181 - 收到的报价:7] - java.util.LinkedHashMap 不能转换为 com.myspace.quotemanagedrules.QuoteDto\"","
我尝试过调试,结果发现不是自定义对象,如果我使用 String 或任何其他文字,它可以正常工作,但是将流程变量作为 Object,它会显示错误
public static final String SERVER_URL="http://localhost:8080/kie-server/services/rest/server";
public static final String LOGIN="wbadmin";
public static final String PASSWORD="wbadmin";
public static final String CONTAINER="QuoteManagedRules_1.0.0-SNAPSHOT";
public static final String processId="QuoteManagedRules.quoteManagedRules";
public static void startProcess() {
//Client configuration setup
KieServicesConfiguration config = KieServicesFactory.newRestConfiguration(SERVER_URL, LOGIN, PASSWORD);
//Add custom classes, such as Obj.class, to the configuration
Set<Class<?>> extraClassList = new HashSet<Class<?>>();
extraClassList.add(QuoteDto.class);
config.addExtraClasses(extraClassList);
config.setMarshallingFormat(MarshallingFormat.JSON);
// ProcessServicesClient setup
KieServicesClient client = KieServicesFactory.newKieServicesClient(config);
ProcessServicesClient processServicesClient = client.getServicesClient(ProcessServicesClient.class);
// Create an instance of the custom class
QuoteDto obj = new QuoteDto();
obj.setAccountId("1");
obj.setCorrelationId("1");
obj.setId("12");
obj.setOppurtunityId("123");
obj.setOppurtunityName("sattu");
obj.setPrice(123);
obj.setRevision(12);
obj.setVersion("12");
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("quote", obj);
// Start the process with custom class
processServicesClient.startProcess(CONTAINER, processId, variables);
}
上面的代码应该启动进程。请让我知道如何解决这个问题。我是否还需要在其他任何地方提及 Quote 类,以便像在 kmodule.xml 中那样正确映射它?
【问题讨论】:
标签: jbpm