in extension/storage/storage-custom/src/main/java/com/alibaba/smart/framework/engine/persister/util/InstanceSerializerV1.java [22:71]
public static String serialize(ProcessInstance processInstance) {
StringBuilder stringBuilder = new StringBuilder(64);
//设置序列化版本号
stringBuilder.append("v1|");
//序列化流程实例
stringBuilder.append(processInstance.getInstanceId()).append(",");
stringBuilder.append(processInstance.getProcessDefinitionIdAndVersion()).append(",");
String parentProcessInstanceId = processInstance.getParentInstanceId();
stringBuilder.append(parentProcessInstanceId).append(",");
String parentExecutionInstanceId = processInstance.getParentExecutionInstanceId();
stringBuilder.append(parentExecutionInstanceId).append(",");
stringBuilder.append(processInstance.getStatus()).append("|");
//----分割线--- 上部分完成流程实例的序列化,下部分完成活动实例和执行实例的序列化。
List<ActivityInstance> activityInstances = processInstance.getActivityInstances();
for (ActivityInstance activityInstance : activityInstances) {
List<ExecutionInstance> executionInstances = activityInstance.getExecutionInstanceList();
for (ExecutionInstance executionInstance : executionInstances) {
if (null != executionInstance) {
boolean active = executionInstance.isActive();
if(active){
//注意: 这里仅保存了需要被执行的实例,历史的activityInstance在这里并没有保存。在阿里的海量数据业务中,也通常不需要。
stringBuilder.append(activityInstance.getInstanceId()).append(",");
stringBuilder.append(activityInstance.getBlockId()).append(",");
stringBuilder.append(activityInstance.getProcessDefinitionActivityId()).append(",");
stringBuilder.append(executionInstance.getInstanceId()).append(",");
stringBuilder.append(active).append(",");
stringBuilder.append("|");
}
}
}
}
return stringBuilder.toString();
}