@Override
public void signal(final ActivityExecution execution, final String signal, final Map<String, Object> parameters) {
final XpdlExecution xpdlExecution = (XpdlExecution) execution;
final XpdlInstance xpdlInstance = xpdlExecution.getXpdlInstance();
xpdlInstance.setInstanceState(InstanceState.STARTED);
final Recorder recorder = ServiceEnvTool.getRecorder();
recorder.recordInstanceStarted(new ProcessInstanceCurrentInfo(
xpdlInstance.getPackageDefinitionUUID(),
xpdlInstance.getProcessDefinitionUUID(),
xpdlInstance.getUUID(),
(xpdlInstance.getParentInstance() != null) ? xpdlInstance.getParentInstance().getUUID() : null,
xpdlExecution.getVariables(),
ServiceEnvTool.getUserId())
);
final ActivityInstanceCurrentInfo activityInstanceCurrentInfo = new ActivityInstanceCurrentInfo(
xpdlInstance.getPackageDefinitionUUID(),
xpdlInstance.getProcessDefinitionUUID(),
xpdlInstance.getUUID(),
xpdlExecution.getCurrentActivityInstanceUUID(),
this.getActivityType(),
this.getActivityId(),
xpdlExecution.getIterationId(),
xpdlExecution.getActivityInstanceId(),
xpdlExecution.getScopeVariables());
recorder.recordEnterActivity(activityInstanceCurrentInfo);
recorder.recordBodyStarted(activityInstanceCurrentInfo);
recorder.recordBodyEnded(activityInstanceCurrentInfo);
executeSplit(execution, false);
}