4242 */
4343public class VariableEventListenerActivityBehaviour extends CoreCmmnTriggerableActivityBehavior implements PlanItemActivityBehavior {
4444
45- protected String variableName ;
46- protected String variableChangeType ;
45+ protected VariableEventListener variableEventListener ;
4746
4847 public VariableEventListenerActivityBehaviour (VariableEventListener variableEventListener ) {
49- this .variableName = variableEventListener .getVariableName ();
50- this .variableChangeType = variableEventListener .getVariableChangeType ();
48+ this .variableEventListener = variableEventListener ;
5149 }
5250
5351 @ Override
@@ -62,17 +60,18 @@ public void onStateTransition(CommandContext commandContext, DelegatePlanItemIns
6260 eventSubscriptionService .deleteEventSubscription (eventSubscription );
6361 }
6462
65- } else if (PlanItemTransition .CREATE .equals (transition )) {
63+ } else if ((PlanItemTransition .CREATE .equals (transition ) && StringUtils .isEmpty (variableEventListener .getAvailableConditionExpression ()))
64+ || PlanItemTransition .INITIATE .equals (transition )) {
6665 String configuration = null ;
67- if (StringUtils .isNotEmpty (variableChangeType )) {
66+ if (StringUtils .isNotEmpty (variableEventListener . getVariableChangeType () )) {
6867 ObjectNode configurationNode = cmmnEngineConfiguration .getObjectMapper ().createObjectNode ();
69- configurationNode .put (VariableListenerEventDefinition .CHANGE_TYPE_PROPERTY , variableChangeType );
68+ configurationNode .put (VariableListenerEventDefinition .CHANGE_TYPE_PROPERTY , variableEventListener . getVariableChangeType () );
7069 configuration = configurationNode .toString ();
7170 }
7271
7372 cmmnEngineConfiguration .getEventSubscriptionServiceConfiguration ().getEventSubscriptionService ().createEventSubscriptionBuilder ()
7473 .eventType ("variable" )
75- .eventName (variableName )
74+ .eventName (variableEventListener . getVariableName () )
7675 .configuration (configuration )
7776 .subScopeId (planItemInstance .getId ())
7877 .scopeId (planItemInstance .getCaseInstanceId ())
@@ -107,7 +106,7 @@ public void trigger(CommandContext commandContext, PlanItemInstanceEntity planIt
107106
108107 List <EventSubscriptionEntity > eventSubscriptions = eventSubscriptionService .findEventSubscriptionsBySubScopeId (planItemInstanceEntity .getId ());
109108 for (EventSubscriptionEntity eventSubscription : eventSubscriptions ) {
110- if ("variable" .equals (eventSubscription .getEventType ()) && variableName .equals (eventSubscription .getEventName ())) {
109+ if ("variable" .equals (eventSubscription .getEventType ()) && variableEventListener . getVariableName () .equals (eventSubscription .getEventName ())) {
111110 eventSubscriptionService .deleteEventSubscription (eventSubscription );
112111 }
113112 }
0 commit comments