import org.activiti.bpmn.model.BpmnModel; //导入方法依赖的package包/类
/**
* 配置用户任务.
*/
public void processUserTask(Node node, BpmnModel bpmnModel, int priority,
BpmConfBase bpmConfBase) {
BpmConfNodeManager bpmConfNodeManager = getBpmConfNodeManager();
BpmConfNode bpmConfNode = bpmConfNodeManager.findUnique(
"from BpmConfNode where code=? and bpmConfBase=?",
node.getId(), bpmConfBase);
if (bpmConfNode == null) {
bpmConfNode = new BpmConfNode();
bpmConfNode.setCode(node.getId());
bpmConfNode.setName(node.getName());
bpmConfNode.setType(node.getType());
bpmConfNode.setConfUser(0);
bpmConfNode.setConfListener(0);
bpmConfNode.setConfRule(0);
bpmConfNode.setConfForm(0);
bpmConfNode.setConfOperation(0);
bpmConfNode.setConfNotice(0);
bpmConfNode.setPriority(priority);
bpmConfNode.setBpmConfBase(bpmConfBase);
bpmConfNodeManager.save(bpmConfNode);
}
// 配置参与者
UserTask userTask = (UserTask) bpmnModel.getFlowElement(node.getId());
int index = 1;
index = this.processUserTaskConf(bpmConfNode, userTask.getAssignee(),
0, index);
for (String candidateUser : userTask.getCandidateUsers()) {
index = this.processUserTaskConf(bpmConfNode, candidateUser, 1,
index);
}
for (String candidateGroup : userTask.getCandidateGroups()) {
this.processUserTaskConf(bpmConfNode, candidateGroup, 2, index);
}
// 配置监听器
this.processListener(userTask.getExecutionListeners(), bpmConfNode);
this.processListener(userTask.getTaskListeners(), bpmConfNode);
// 配置表单
this.processForm(userTask, bpmConfNode);
// 会签
if (userTask.getLoopCharacteristics() != null) {
BpmConfCountersign bpmConfCountersign = new BpmConfCountersign();
bpmConfCountersign.setType(0);
bpmConfCountersign.setRate(100);
bpmConfCountersign.setBpmConfNode(bpmConfNode);
bpmConfCountersign.setSequential(userTask.getLoopCharacteristics()
.isSequential() ? 1 : 0);
getBpmConfCountersignManager().save(bpmConfCountersign);
}
// 更新TaskDefinition
TaskDefinitionConnector taskDefinitionConnector = this
.getTaskDefinitionConnector();
TaskDefinitionDTO taskDefinitionDto = new TaskDefinitionBuilder()
.setUserTask(userTask)
.setProcessDefinitionId(bpmConfBase.getProcessDefinitionId())
.build();
taskDefinitionConnector.create(taskDefinitionDto);
}