Esempio n. 1
0
        public virtual ExecutionContext CreateCalledElementContext(CallableElement callableElement)
        {
            if (callableElement == null)
            {
                throw new ArgumentNullException(nameof(callableElement));
            }

            var context = this.Context;

            var process           = callableElement as Process;
            var processDefinition = context.DeploymentManager.FindProcessDefinitionByKey(process.Id);

            if (processDefinition == null)
            {
                throw new ObjectNotFoundException(nameof(ProcessDefinition));
            }

            var builder            = context.RuntimeManager.CreateInstanceBuilder();
            var subProcessInstance = builder
                                     .SetProcessDefinition(processDefinition)
                                     .SetSuper(this.token)
                                     .BuildAsync().Result;

            var subToken = subProcessInstance.Token;

            //Set subProcessInstance.
            this.token.SubProcessInstance = subProcessInstance;

            return(context.ExecutionContextManager.Create(subToken));
        }
Esempio n. 2
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);
        }
Esempio n. 3
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;
                }
            }
        }
Esempio n. 4
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;
            }
        }
Esempio n. 5
0
        protected virtual void Init(CallableElement callableElement, IParseContext context, XElement element)
        {
            callableElement.Name = element.GetAttribute("name");

            base.Init(callableElement, context, element);
        }
Esempio n. 6
0
 public EventSubscriptionDeclaration(Expression eventExpression, EventType eventType, CallableElement eventPayload)
 {
     this.eventType    = eventType;
     this.eventName    = eventExpression;
     this.eventPayload = eventPayload;
 }
Esempio n. 7
0
 public EventSubscriptionDeclaration(Expression eventExpression, EventType eventType)
 {
     this.eventName    = eventExpression;
     this.eventType    = eventType;
     this.eventPayload = null;
 }
 protected internal virtual int?GetVersion(IActivityExecution execution)
 {
     return(CallableElement.GetVersion(execution));
 }
 protected internal virtual IVariableMap GetOutputVariablesLocal(IVariableScope calledElementScope)
 {
     return(CallableElement.GetOutputVariablesLocal(calledElementScope));
 }
 protected internal virtual IVariableMap GetInputVariables(IActivityExecution callingExecution)
 {
     return(CallableElement.GetInputVariables(callingExecution));
 }
 protected internal virtual string GetBusinessKey(IActivityExecution execution)
 {
     return(CallableElement.GetBusinessKey(execution));
 }