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)); }
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); }
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; } } }
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; } }
protected virtual void Init(CallableElement callableElement, IParseContext context, XElement element) { callableElement.Name = element.GetAttribute("name"); base.Init(callableElement, context, element); }
public EventSubscriptionDeclaration(Expression eventExpression, EventType eventType, CallableElement eventPayload) { this.eventType = eventType; this.eventName = eventExpression; this.eventPayload = eventPayload; }
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)); }