2

我正在使用 Camunda 外部任务,从 ExternalTask​​Handler 实现我自己的处理程序,但是当我想获得这样的变量时:

HashMap map = externalTask.getVariable("PROCVARS");

我收到了一个错误:

org.camunda.bpm.client.exception.ValueMapperException: TASK/CLIENT-01024 Cannot find serializer for value 'rO0ABXNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAx3CAAAABAAAAAFdAAabmF0dXJhbF9wYXRlcm5hbF9sYXN0X25hbWV0AARNb3JhdAAPcGVyc29uX2xlZ2FsX2lkdAAFMTIzNDV0AApyZXF1ZXN0X2lkdAABNXQAEm5hdHVyYWxfZmlyc3RfbmFtZXQACUNocmlzdGlhbnQAEXBlcnNvbl9sZWdhbF90eXBldAABQ3g='
at org.camunda.bpm.client.impl.ExternalTaskClientLogger.valueMapperExceptionDueToSerializerNotFoundForTypedValueField(ExternalTaskClientLogger.java:183) ~[?:?]
at org.camunda.bpm.client.variable.impl.DefaultValueMappers.findMapperForTypedValueField(DefaultValueMappers.java:78) ~[?:?]
at org.camunda.bpm.client.variable.impl.VariableValue.getSerializer(VariableValue.java:73) ~[?:?]
at org.camunda.bpm.client.variable.impl.VariableValue.getTypedValue(VariableValue.java:58) ~[?:?]
at org.camunda.bpm.client.task.impl.ExternalTaskImpl.getVariableTyped(ExternalTaskImpl.java:271) ~[?:?]
at org.camunda.bpm.client.task.impl.ExternalTaskImpl.getVariableTyped(ExternalTaskImpl.java:260) ~[?:?]
at com.fisa.bpm.handler.ScheduleHandler.convertTo(ScheduleHandler.java:40) ~[?:?]
at com.fisa.bpm.handler.ScheduleHandler.execute(ScheduleHandler.java:26) ~[?:?]
at org.camunda.bpm.client.topic.impl.TopicSubscriptionManager.handleExternalTask(TopicSubscriptionManager.java:143) ~[?:?]
at org.camunda.bpm.client.topic.impl.TopicSubscriptionManager.lambda$acquire$0(TopicSubscriptionManager.java:102) ~[?:?]
at java.util.Arrays$ArrayList.forEach(Arrays.java:3880) ~[?:?]

该对象是在流程 bpmn 中使用脚本 javascript 创建的:

var HashMap = Java.type("java.util.HashMap");
var vars = new HashMap();
vars.put("request_id",request_id);
vars.put("person_legal_type","C");
vars.put("person_legal_id","12345");
vars.put("natural_paternal_last_name","Mora");
vars.put("natural_first_name","Christian");

execution.setVariable('PROCVARS', vars);

如果我检查 Camunda Cockpit 上的对象,我会看到:

PROCVARS 的价值 - 它是一张地图

Camunda BPMN 流程是这样的:

卡蒙达 BPMN

任何人都知道如何在外部任务实现中反序列化这种对象?

更新

对我有用,在脚本任务中将对象更改为JSON 格式

var vars = {};
vars.request_id = request_id;
vars.person_legal_type = "C";
vars.person_legal_id = "12345";
vars.natural_paternal_last_name = "Mora";
vars.natural_first_name = "Christian";

var proc = JSON.stringify(vars);
execution.setVariable('PROCVARS', proc); 
4

0 回答 0