Ejemplo n.º 1
0
        public override void ExecutionStarted(IActivityExecution execution)
        {
            FormPropertyHelper.InitFormPropertiesOnScope(formProperties, execution);

            // make sure create events are fired after form is submitted
            base.ExecutionStarted(execution);
        }
Ejemplo n.º 2
0
        public virtual IProcessInstance Execute(CommandContext commandContext)
        {
            var                     processEngineConfiguration = context.Impl.Context.ProcessEngineConfiguration;
            DeploymentCache         deploymentCache            = processEngineConfiguration.DeploymentCache;
            ProcessDefinitionEntity processDefinition          =
                deploymentCache.FindDeployedProcessDefinitionById(ProcessDefinitionId);

            EnsureUtil.EnsureNotNull("No process definition found for id = '" + ProcessDefinitionId + "'",
                                     "processDefinition", processDefinition);

            foreach (var checker in commandContext.ProcessEngineConfiguration.CommandCheckers)
            {
                checker.CheckCreateProcessInstance(processDefinition);
            }

            ExecutionEntity processInstance = null;

            if (!ReferenceEquals(BusinessKey, null))
            {
                processInstance = (ExecutionEntity)processDefinition.CreateProcessInstance(BusinessKey);
            }
            else
            {
                processInstance = (ExecutionEntity)processDefinition.CreateProcessInstance();
            }

            //if the start event is async, we have to set the variables already here
            //since they are lost after the async continuation otherwise
            if (processDefinition.Initial.AsyncBefore)
            {
                // avoid firing history events
                processInstance.StartContext = new ProcessInstanceStartContext(processInstance.Activity as ActivityImpl);
                FormPropertyHelper.InitFormPropertiesOnScope(Variables, processInstance);
                processInstance.Start();
            }
            else
            {
                processInstance.StartWithFormProperties(Variables);
            }


            return((IProcessInstance)processInstance);
        }