1. 修复历史记录表 不会设置assignee 及 owner 字段值。
问题描述: 历史记录表记录数据时,assignee 及 owner 字段值 为空!
解决方案: 手动设置对应字段值
HistoryManager historyManager = Context.getProcessEngineConfiguration().getHistoryManager();
taskEntity.setAssignee(userTaskAssignee);
taskEntity.setOwner(userTaskAssignee);
historyManager.recordTaskInfoChange(taskEntity, taskEntity.getProcessInstanceId());
2. BpmnModel 数据串了(不推荐 直接复制一个模板,然后修改)
问题描述: 即 A流程的 BpmnModel 拿到了 B流程的BpmnModel
解决方案:
不要通过以下方式获取BpmnModel
BpmnModel bpmnModel = repositoryService.getBpmnModel(flowableNodeQueryDTO.getApply().getDefinitionId());
使用以下方式获取BpmnModel
/**
* todo: 通过流程定义拿流程模型
*
* @author : zhoulin.zhu
*/
public class GetProcessInstanceBpmnModelByDefIdCmd implements Command<BpmnModel>,Serializable {
private static final long serialVersionUID = -2234685368826280017L;
private String processDefinitionId;
public GetProcessInstanceBpmnModelByDefIdCmd(String processDefinitionId) {
this.processDefinitionId = processDefinitionId;
}
@Override
public BpmnModel execute(CommandContext commandContext) {
DeploymentManager deploymentManager = CommandContextUtil.getProcessEngineConfiguration().getDeploymentManager();
ProcessDefinitionEntity originalProcessDefinitionEntity = CommandContextUtil.getProcessDefinitionEntityManager(commandContext).findById(processDefinitionId);
DeploymentEntity deploymentEntity = deploymentManager.getDeploymentEntityManager().findById( originalProcessDefinitionEntity.getDeploymentId());
BpmnModel bpmnModel = createBpmnModel(commandContext, originalProcessDefinitionEntity, deploymentEntity);
return bpmnModel;
}
protected BpmnModel createBpmnModel(CommandContext commandContext, ProcessDefinitionEntity originalProcessDefinitionEntity, DeploymentEntity newDeploymentEntity) {
ResourceEntity originalBpmnResource = CommandContextUtil.getResourceEntityManager(commandContext)
.findResourceByDeploymentIdAndResourceName(originalProcessDefinitionEntity.getDeploymentId(), originalProcessDefinitionEntity.getResourceName());
BpmnModel bpmnModel = new BpmnXMLConverter().convertToBpmnModel(new BytesStreamSource(originalBpmnResource.getBytes()), false, false);
//updateBpmnProcess(commandContext, process, bpmnModel, originalProcessDefinitionEntity, newDeploymentEntity);
return bpmnModel;
}
}
// 推荐使用以下方式获取
BpmnModel bpmnModel = processEngine.getManagementService().executeCommand(new GetProcessInstanceBpmnModelByDefIdCmd(flowableNodeQueryDTO.getApply().getDefinitionId()));