Skip to content

Commit

Permalink
force user tasks to be scope, formatting
Browse files Browse the repository at this point in the history
  • Loading branch information
nevries committed Mar 8, 2019
1 parent d44472a commit 5d893b5
Showing 1 changed file with 14 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,8 @@ public void parseStartEvent(Element startEventElement, ScopeImpl scope, Activity
// only create simulating timers for none, conditional, message and signal
// start events
final String activityType = startEventActivity.getProperties().get(BpmnProperties.TYPE);
if (Arrays.asList(new String[] { ActivityTypes.START_EVENT, ActivityTypes.START_EVENT_CONDITIONAL, ActivityTypes.START_EVENT_MESSAGE,
ActivityTypes.START_EVENT_SIGNAL }).contains(activityType)) {
if (Arrays.asList(new String[]{ActivityTypes.START_EVENT, ActivityTypes.START_EVENT_CONDITIONAL, ActivityTypes.START_EVENT_MESSAGE,
ActivityTypes.START_EVENT_SIGNAL}).contains(activityType)) {
Optional<String> simNextFire = ModelPropertyUtil.getNextFire(startEventElement);
if (simNextFire.isPresent()) {
LOG.debug("Adding simulating start timer for start event " + startEventElement.attribute("id"));
Expand Down Expand Up @@ -150,6 +150,10 @@ public void parseUserTask(Element userTaskElement, ScopeImpl scope, ActivityImpl

addUserTaskCompleteJobCreatingListener(activity);
addUserTaskClaimJobCreatingListener(activity);

// since claim and complete timers are attached to execution, the task has to be a scope to get rid of the timer
// jobs when the task is leaved
activity.setScope(true);
}

@Override
Expand All @@ -164,7 +168,7 @@ public void parseBoundaryTimerEventDefinition(Element timerEventDefinition, bool

@Override
public void parseBoundaryErrorEventDefinition(Element errorEventDefinition, boolean interrupting, ActivityImpl activity,
ActivityImpl nestedErrorEventActivity) {
ActivityImpl nestedErrorEventActivity) {
}

@Override
Expand Down Expand Up @@ -294,22 +298,21 @@ private void addPayloadGeneratingListener(ActivityImpl activity) {

private void addExternalTaskCompleteJobCreatingListener(ScopeImpl scope) {
scope.addBuiltInListener(ExecutionListener.EVENTNAME_START, ExternalTaskJobCreateListener.instance());

}

private void addUserTaskCompleteJobCreatingListener(ActivityImpl activity) {

((UserTaskActivityBehavior) activity.getActivityBehavior()).getTaskDefinition().addTaskListener(TaskListener.EVENTNAME_CREATE,
UserTaskCompleteJobCreateListener.instance());
((UserTaskActivityBehavior) activity.getActivityBehavior()).getTaskDefinition()
.addTaskListener(TaskListener.EVENTNAME_CREATE, UserTaskCompleteJobCreateListener.instance());

}

private void addUserTaskClaimJobCreatingListener(ActivityImpl activity) {

((UserTaskActivityBehavior) activity.getActivityBehavior()).getTaskDefinition().addTaskListener(TaskListener.EVENTNAME_CREATE,
UserTaskClaimJobCreateListener.instance());
((UserTaskActivityBehavior) activity.getActivityBehavior()).getTaskDefinition()
.addTaskListener(TaskListener.EVENTNAME_CREATE, UserTaskClaimJobCreateListener.instance());

}
}

private void replaceBehaviourByNoOp(Element element, ActivityImpl activity) {
// we only replace the behavior if simCallRealImplementation is not
Expand Down Expand Up @@ -358,7 +361,7 @@ private void stripNonBuiltinListeners(CoreModelElement element) {
final Object keepListeners = element.getProperty(PROPERTYNAME_KEEP_LISTENERS);
if (keepListeners == null || !keepListeners.equals(true)) {
element.getListeners().keySet().forEach(eventType -> {
for (Iterator<DelegateListener<?>> i = element.getListeners(eventType).iterator(); i.hasNext();) {
for (Iterator<DelegateListener<?>> i = element.getListeners(eventType).iterator(); i.hasNext(); ) {
DelegateListener<?> currentListener = i.next();
if (!element.getBuiltInListeners(eventType).contains(currentListener)) {
i.remove();
Expand Down

0 comments on commit 5d893b5

Please sign in to comment.