在 Camunda 中设置一个没有序列化的瞬态对象变量
Set a transient object variable without serializing in Camunda
我在 Camunda 中有一个没有任何用户任务的进程。 Iy 只有一些服务任务。
我想设置一个瞬态对象变量,然后进入多个任务并对其进行操作,但 Camunda 强迫我让它实现 Serializable
接口。
我的代码是:
TypedValue transient_ctx = Variables.objectValue( new BpmContext(), true).create();
ProcessInstanceWithVariables process_res =
runtimeService.createProcessInstanceByKey(param.getProcessKey())
.setVariable("Param", transient_ctx)
.executeWithVariablesInReturn();
但得到以下异常:
org.camunda.bpm.engine.ProcessEngineException: Cannot find serializer for value 'ObjectValue [value=org.BpmContext@433a4e29, isDeserialized=true, serializationDataFormat=null, objectTypeName=null, serializedValue=null, isTransient=true]'.
有没有什么方法可以在不序列化的情况下正常设置临时对象?
如果您要将数据作为过程数据传输,那么 Camunda 需要对其进行序列化,无论是 Java 还是其他序列化数据格式。
由于您可以接受瞬态过程数据,这意味着您不希望数据可用的时间超过当前线程的生命周期。
我想 ThreadLocal 变量也可以为您解决问题。网上有很多例子。这是一个:https://codedelay.com/threadlocal-variable-in-java-with-example/
我在 Camunda 中有一个没有任何用户任务的进程。 Iy 只有一些服务任务。
我想设置一个瞬态对象变量,然后进入多个任务并对其进行操作,但 Camunda 强迫我让它实现 Serializable
接口。
我的代码是:
TypedValue transient_ctx = Variables.objectValue( new BpmContext(), true).create();
ProcessInstanceWithVariables process_res =
runtimeService.createProcessInstanceByKey(param.getProcessKey())
.setVariable("Param", transient_ctx)
.executeWithVariablesInReturn();
但得到以下异常:
org.camunda.bpm.engine.ProcessEngineException: Cannot find serializer for value 'ObjectValue [value=org.BpmContext@433a4e29, isDeserialized=true, serializationDataFormat=null, objectTypeName=null, serializedValue=null, isTransient=true]'.
有没有什么方法可以在不序列化的情况下正常设置临时对象?
如果您要将数据作为过程数据传输,那么 Camunda 需要对其进行序列化,无论是 Java 还是其他序列化数据格式。
由于您可以接受瞬态过程数据,这意味着您不希望数据可用的时间超过当前线程的生命周期。 我想 ThreadLocal 变量也可以为您解决问题。网上有很多例子。这是一个:https://codedelay.com/threadlocal-variable-in-java-with-example/