protected ProcessInstance startProcessInstance(ProcessDefinitionConfig config,
String externalKey,
ProcessToolContext ctx,
ProcessInstance pi) {
ProcessEngine processEngine = getProcessEngine();
final RuntimeService execService = processEngine.getRuntimeService();
Map vars = new HashMap();
vars.put("processInstanceId", String.valueOf(pi.getId()));
vars.put("initiator", user.getLogin());
for (ProcessInstanceAttribute pia : pi.getProcessAttributes()) {
if (pia instanceof BpmVariable) {
BpmVariable bpmVar = (BpmVariable) pia;
if (hasText(bpmVar.getBpmVariableName())) {
vars.put(bpmVar.getBpmVariableName(), bpmVar.getBpmVariableValue());
}
}
}
org.activiti.engine.runtime.ProcessInstance instance = execService
.startProcessInstanceByKey(config.getBpmDefinitionKey(),
externalKey,
vars);
pi.setInternalId(instance.getId());
fillProcessAssignmentData(pi, ctx);
return pi;
}