Example #1
0
        protected internal override void initializeActivity(CmmnElement element, CmmnActivity activity, CmmnHandlerContext context)
        {
            // execute standard initialization
            base.initializeActivity(element, activity, context);

            // create a taskDefinition
            TaskDefinition taskDefinition = createTaskDefinition(element, context);

            // get the caseDefinition...
            CaseDefinitionEntity caseDefinition = (CaseDefinitionEntity)context.CaseDefinition;

            // ... and taskDefinition to caseDefinition
            caseDefinition.TaskDefinitions[taskDefinition.Key] = taskDefinition;

            ExpressionManager expressionManager = context.ExpressionManager;
            // create decorator
            TaskDecorator taskDecorator = new TaskDecorator(taskDefinition, expressionManager);

            // set taskDecorator on behavior
            HumanTaskActivityBehavior behavior = (HumanTaskActivityBehavior)activity.ActivityBehavior;

            behavior.TaskDecorator = taskDecorator;

            // task listeners
            initializeTaskListeners(element, activity, context, taskDefinition);
        }
Example #2
0
 protected internal virtual void initializeVariableOnParts(CmmnElement element, CmmnSentryDeclaration sentryDeclaration, CmmnHandlerContext context, IList <CamundaVariableOnPart> variableOnParts)
 {
     foreach (CamundaVariableOnPart variableOnPart in variableOnParts)
     {
         initializeVariableOnPart(variableOnPart, sentryDeclaration, context);
     }
 }
Example #3
0
        protected internal virtual void initializeOutputParameter(CmmnElement element, CmmnActivity activity, CmmnHandlerContext context, CallableElement callableElement)
        {
            ExpressionManager expressionManager = context.ExpressionManager;

            IList <CamundaOut> outputs = getOutputs(element);

            foreach (CamundaOut output in outputs)
            {
                // create new parameter
                CallableElementParameter parameter = new CallableElementParameter();
                callableElement.addOutput(parameter);

                // all variables
                string variables = output.CamundaVariables;
                if ("all".Equals(variables))
                {
                    parameter.AllVariables = true;
                    continue;
                }

                // source/sourceExpression
                string source = output.CamundaSource;
                if (string.ReferenceEquals(source, null) || source.Length == 0)
                {
                    source = output.CamundaSourceExpression;
                }

                ParameterValueProvider sourceValueProvider = createParameterValueProvider(source, expressionManager);
                parameter.SourceValueProvider = sourceValueProvider;

                // target
                string target = output.CamundaTarget;
                parameter.Target = target;
            }
        }
Example #4
0
        protected internal virtual CaseDefinitionEntity createActivity(CmmnElement element, CmmnHandlerContext context)
        {
            CaseDefinitionEntity definition = new CaseDefinitionEntity();

            definition.CmmnElement = element;

            return(definition);
        }
Example #5
0
        protected internal override void initializeAutoComplete(CmmnElement element, CmmnActivity activity, CmmnHandlerContext context)
        {
            PlanItemDefinition definition = getDefinition(element);

            if (definition is Stage)
            {
                Stage stage = (Stage)definition;
                activity.setProperty(PROPERTY_AUTO_COMPLETE, stage.AutoComplete);
            }
        }
Example #6
0
        protected internal override void initializeCallableElement(CmmnElement element, CmmnActivity activity, CmmnHandlerContext context)
        {
            base.initializeCallableElement(element, activity, context);

            ProcessOrCaseTaskActivityBehavior behavior = (ProcessOrCaseTaskActivityBehavior)activity.ActivityBehavior;
            CallableElement callableElement            = behavior.CallableElement;

            // inputs
            initializeInputParameter(element, activity, context, callableElement);

            // outputs
            initializeOutputParameter(element, activity, context, callableElement);
        }
Example #7
0
        protected internal virtual void initializeTaskDefinitionPriority(CmmnElement element, TaskDefinition taskDefinition, CmmnHandlerContext context)
        {
            HumanTask definition = getDefinition(element);

            string priority = definition.CamundaPriority;

            if (!string.ReferenceEquals(priority, null))
            {
                ExpressionManager expressionManager  = context.ExpressionManager;
                Expression        priorityExpression = expressionManager.createExpression(priority);
                taskDefinition.PriorityExpression = priorityExpression;
            }
        }
Example #8
0
        protected internal virtual void initializeTaskDefinitionFollowUpDate(CmmnElement element, TaskDefinition taskDefinition, CmmnHandlerContext context)
        {
            HumanTask definition = getDefinition(element);

            string followUpDate = definition.CamundaFollowUpDate;

            if (!string.ReferenceEquals(followUpDate, null))
            {
                ExpressionManager expressionManager      = context.ExpressionManager;
                Expression        followUpDateExpression = expressionManager.createExpression(followUpDate);
                taskDefinition.FollowUpDateExpression = followUpDateExpression;
            }
        }
Example #9
0
        protected internal virtual void initializeTaskDefinitionCandidateGroups(CmmnElement element, TaskDefinition taskDefinition, CmmnHandlerContext context)
        {
            HumanTask         definition        = getDefinition(element);
            ExpressionManager expressionManager = context.ExpressionManager;

            IList <string> candidateGroups = definition.CamundaCandidateGroupsList;

            foreach (string candidateGroup in candidateGroups)
            {
                Expression candidateGroupExpression = expressionManager.createExpression(candidateGroup);
                taskDefinition.addCandidateGroupIdExpression(candidateGroupExpression);
            }
        }
Example #10
0
        protected internal virtual void initializeInputParameter(CmmnElement element, CmmnActivity activity, CmmnHandlerContext context, CallableElement callableElement)
        {
            ExpressionManager expressionManager = context.ExpressionManager;

            IList <CamundaIn> inputs = getInputs(element);

            foreach (CamundaIn input in inputs)
            {
                // businessKey
                string businessKey = input.CamundaBusinessKey;
                if (!string.ReferenceEquals(businessKey, null) && businessKey.Length > 0)
                {
                    ParameterValueProvider businessKeyValueProvider = createParameterValueProvider(businessKey, expressionManager);
                    callableElement.BusinessKeyValueProvider = businessKeyValueProvider;
                }
                else
                {
                    // create new parameter
                    CallableElementParameter parameter = new CallableElementParameter();
                    callableElement.addInput(parameter);

                    if (input.CamundaLocal)
                    {
                        parameter.ReadLocal = true;
                    }

                    // all variables
                    string variables = input.CamundaVariables;
                    if ("all".Equals(variables))
                    {
                        parameter.AllVariables = true;
                        continue;
                    }

                    // source/sourceExpression
                    string source = input.CamundaSource;
                    if (string.ReferenceEquals(source, null) || source.Length == 0)
                    {
                        source = input.CamundaSourceExpression;
                    }

                    ParameterValueProvider sourceValueProvider = createParameterValueProvider(source, expressionManager);
                    parameter.SourceValueProvider = sourceValueProvider;

                    // target
                    string target = input.CamundaTarget;
                    parameter.Target = target;
                }
            }
        }
Example #11
0
        protected internal virtual IList <V> queryExtensionElementsByClass <V>(CmmnElement element, Type cls) where V : org.camunda.bpm.model.xml.instance.ModelElementInstance
        {
            cls = typeof(V);
            ExtensionElements extensionElements = element.ExtensionElements;

            if (extensionElements != null)
            {
                Query <ModelElementInstance> query = extensionElements.ElementsQuery;
                return(query.filterByType(cls).list());
            }
            else
            {
                return(new List <V>());
            }
        }
Example #12
0
        public override CmmnActivity handleElement(CmmnElement element, CmmnHandlerContext context)
        {
            HumanTask definition = getDefinition(element);

            if (!definition.Blocking)
            {
                // The CMMN 1.0 specification says:
                // When a HumanTask is not 'blocking' (isBlocking is 'false'),
                // it can be considered a 'manual' Task, i.e., the Case management
                // system is not tracking the lifecycle of the HumanTask (instance).
                return(null);
            }

            return(base.handleElement(element, context));
        }
Example #13
0
        protected internal virtual void initializeTaskDefinitionName(CmmnElement element, TaskDefinition taskDefinition, CmmnHandlerContext context)
        {
            string name = getName(element);

            if (string.ReferenceEquals(name, null))
            {
                HumanTask definition = getDefinition(element);
                name = definition.Name;
            }

            if (!string.ReferenceEquals(name, null))
            {
                ExpressionManager expressionManager = context.ExpressionManager;
                Expression        nameExpression    = expressionManager.createExpression(name);
                taskDefinition.NameExpression = nameExpression;
            }
        }
Example #14
0
        protected internal virtual void initializeTaskDescription(CmmnElement element, TaskDefinition taskDefinition, CmmnHandlerContext context)
        {
            string description = getDesciption(element);

            if (!string.ReferenceEquals(description, null) && description.Length > 0)
            {
                ExpressionManager expressionManager     = context.ExpressionManager;
                Expression        descriptionExpression = expressionManager.createExpression(description);
                taskDefinition.DescriptionExpression = descriptionExpression;
            }
            else
            {
                string documentation = getDocumentation(element);
                if (!string.ReferenceEquals(documentation, null) && documentation.Length > 0)
                {
                    ExpressionManager expressionManager       = context.ExpressionManager;
                    Expression        documentationExpression = expressionManager.createExpression(documentation);
                    taskDefinition.DescriptionExpression = documentationExpression;
                }
            }
        }
Example #15
0
        protected internal virtual TaskDefinition createTaskDefinition(CmmnElement element, CmmnHandlerContext context)
        {
            Deployment deployment   = context.Deployment;
            string     deploymentId = deployment.Id;

            // at the moment a default task form handler is only supported,
            // custom task form handler are not supported.
            DefaultTaskFormHandler taskFormHandler = new DefaultTaskFormHandler();

            taskFormHandler.DeploymentId = deploymentId;

            // create new taskDefinition
            TaskDefinition taskDefinition = new TaskDefinition(taskFormHandler);

            // the plan item id will be handled as taskDefinitionKey
            string taskDefinitionKey = element.Id;

            taskDefinition.Key = taskDefinitionKey;

            // name
            initializeTaskDefinitionName(element, taskDefinition, context);
            // dueDate
            initializeTaskDefinitionDueDate(element, taskDefinition, context);
            // followUp
            initializeTaskDefinitionFollowUpDate(element, taskDefinition, context);
            // priority
            initializeTaskDefinitionPriority(element, taskDefinition, context);
            // assignee
            initializeTaskDefinitionAssignee(element, taskDefinition, context);
            // candidateUsers
            initializeTaskDefinitionCandidateUsers(element, taskDefinition, context);
            // candidateGroups
            initializeTaskDefinitionCandidateGroups(element, taskDefinition, context);
            // formKey
            initializeTaskDefinitionFormKey(element, taskDefinition, context);
            // description
            initializeTaskDescription(element, taskDefinition, context);

            return(taskDefinition);
        }
Example #16
0
        protected internal virtual TaskListener initializeTaskListener(CmmnElement element, CmmnActivity activity, CmmnHandlerContext context, CamundaTaskListener listener)
        {
            ICollection <CamundaField> fields            = listener.CamundaFields;
            IList <FieldDeclaration>   fieldDeclarations = initializeFieldDeclarations(element, activity, context, fields);

            ExpressionManager expressionManager = context.ExpressionManager;

            TaskListener taskListener = null;

            string        className          = listener.CamundaClass;
            string        expression         = listener.CamundaExpression;
            string        delegateExpression = listener.CamundaDelegateExpression;
            CamundaScript scriptElement      = listener.CamundaScript;

            if (!string.ReferenceEquals(className, null))
            {
                taskListener = new ClassDelegateTaskListener(className, fieldDeclarations);
            }
            else if (!string.ReferenceEquals(expression, null))
            {
                Expression expressionExp = expressionManager.createExpression(expression);
                taskListener = new ExpressionTaskListener(expressionExp);
            }
            else if (!string.ReferenceEquals(delegateExpression, null))
            {
                Expression delegateExp = expressionManager.createExpression(delegateExpression);
                taskListener = new DelegateExpressionTaskListener(delegateExp, fieldDeclarations);
            }
            else if (scriptElement != null)
            {
                ExecutableScript executableScript = initializeScript(element, activity, context, scriptElement);
                if (executableScript != null)
                {
                    taskListener = new ScriptTaskListener(executableScript);
                }
            }

            return(taskListener);
        }
Example #17
0
        protected internal virtual void initializeTaskDefinitionAssignee(CmmnElement element, TaskDefinition taskDefinition, CmmnHandlerContext context)
        {
            HumanTask definition = getDefinition(element);
            Role      performer  = definition.Performer;

            string assignee = null;

            if (performer != null)
            {
                assignee = performer.Name;
            }
            else
            {
                assignee = definition.CamundaAssignee;
            }

            if (!string.ReferenceEquals(assignee, null))
            {
                ExpressionManager expressionManager  = context.ExpressionManager;
                Expression        assigneeExpression = expressionManager.createExpression(assignee);
                taskDefinition.AssigneeExpression = assigneeExpression;
            }
        }
Example #18
0
        protected internal virtual void initializeTaskListeners(CmmnElement element, CmmnActivity activity, CmmnHandlerContext context, TaskDefinition taskDefinition)
        {
            HumanTask humanTask = getDefinition(element);

            IList <CamundaTaskListener> listeners = queryExtensionElementsByClass(humanTask, typeof(CamundaTaskListener));

            foreach (CamundaTaskListener listener in listeners)
            {
                TaskListener taskListener = initializeTaskListener(element, activity, context, listener);

                string eventName = listener.CamundaEvent;
                if (!string.ReferenceEquals(eventName, null))
                {
                    taskDefinition.addTaskListener(eventName, taskListener);
                }
                else
                {
                    taskDefinition.addTaskListener([email protected]_Fields.EVENTNAME_CREATE, taskListener);
                    taskDefinition.addTaskListener([email protected]_Fields.EVENTNAME_ASSIGNMENT, taskListener);
                    taskDefinition.addTaskListener([email protected]_Fields.EVENTNAME_COMPLETE, taskListener);
                    taskDefinition.addTaskListener([email protected]_Fields.EVENTNAME_DELETE, taskListener);
                }
            }
        }
Example #19
0
        protected internal virtual IList <CamundaOut> getOutputs(CmmnElement element)
        {
            PlanItemDefinition definition = getDefinition(element);

            return(queryExtensionElementsByClass(definition, typeof(CamundaOut)));
        }
Example #20
0
 protected internal override IList <string> getStandardEvents(CmmnElement element)
 {
     return(TASK_OR_STAGE_EVENTS);
 }
Example #21
0
 protected internal override void initializeExitCriterias(CmmnElement element, CmmnActivity activity, CmmnHandlerContext context)
 {
     // exit criteria is not applicable on milestones
 }
Example #22
0
 protected internal override void initializeManualActivationRule(CmmnElement element, CmmnActivity activity, CmmnHandlerContext context)
 {
     // manual activation rule is not applicable on milestones
 }
Example #23
0
 protected internal override IList <string> getStandardEvents(CmmnElement element)
 {
     return(EVENT_LISTENER_OR_MILESTONE_EVENTS);
 }
Example #24
0
 protected internal override void initializeRequiredRule(CmmnElement element, CmmnActivity activity, CmmnHandlerContext context)
 {
     // required rule is not applicable on event listeners
 }
Example #25
0
 protected internal override void initializeEntryCriterias(CmmnElement element, CmmnActivity activity, CmmnHandlerContext context)
 {
     // entry criteria is not applicable on event listeners
 }
Example #26
0
 protected internal override IList <string> getStandardEvents(CmmnElement element)
 {
     return(CASE_PLAN_MODEL_EVENTS);
 }
Example #27
0
 protected internal override PlanItemDefinition getDefinition(CmmnElement element)
 {
     return((PlanItemDefinition)element);
 }
Example #28
0
        protected internal virtual void initializeBlocking(CmmnElement element, CmmnActivity activity, CmmnHandlerContext context)
        {
            Task task = (Task)getDefinition(element);

            activity.setProperty("isBlocking", task.Blocking);
        }
Example #29
0
 protected internal override HumanTask getDefinition(CmmnElement element)
 {
     return((HumanTask)base.getDefinition(element));
 }
Example #30
0
        protected internal override void initializeActivity(CmmnElement element, CmmnActivity activity, CmmnHandlerContext context)
        {
            base.initializeActivity(element, activity, context);

            initializeBlocking(element, activity, context);
        }