在 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/