Ejemplo n.º 1
0
		public void AddProcessDefinition(Guid schemeId, ProcessDefinition processDefinition)
		{
			if (this._cache == null)
			{
				this._cache = new Dictionary<Guid, ProcessDefinition>()
				{
					{ schemeId, processDefinition }
				};
			}
			else if (!this._cache.ContainsKey(schemeId))
			{
				this._cache.Add(schemeId, processDefinition);
			}
			else
			{
				this._cache[schemeId] = processDefinition;
			}
			int maxNumberOfSchemes = Licensing.GetLicenseRestrictions<WorkflowEngineNetRestrictions>().MaxNumberOfSchemes;
			if (maxNumberOfSchemes > 0)
			{
				if ((
					from pi in this._cache.Values
					group pi by pi.Name).Count<IGrouping<string, ProcessDefinition>>() > maxNumberOfSchemes)
				{
					throw new LicenseException(string.Format("Maximum number of schemes for your license {0}.", maxNumberOfSchemes));
				}
			}
		}
Ejemplo n.º 2
0
		private static void AddActivitiesAndTransitions(ProcessDefinition processDefinition, List<ActivityDefinition> activities, List<TransitionDefinition> transitions, TransitionDefinition startingTransition, List<string> finalActivities, int cutoffNestingLevel)
		{
			if (transitions.Any<TransitionDefinition>((TransitionDefinition t) => t.Name.Equals(startingTransition.Name, StringComparison.InvariantCulture)))
			{
				return;
			}
			ActivityDefinition to = startingTransition.To;
			if (startingTransition.ForkType == TransitionForkType.ForkEnd)
			{
				int? nestingLevel = to.NestingLevel;
				if ((nestingLevel.GetValueOrDefault() > cutoffNestingLevel ? false : nestingLevel.HasValue))
				{
					TransitionDefinition transitionDefinition = startingTransition.Clone() as TransitionDefinition;
					transitionDefinition.IsFork = false;
					transitions.Add(transitionDefinition);
					if (!activities.Any<ActivityDefinition>((ActivityDefinition a) => a.Name.Equals(to.Name, StringComparison.InvariantCulture)))
					{
						ActivityDefinition activityDefinition = ActivityDefinition.Create(to.Name, to.State, false, true, false, false);
						activities.Add(activityDefinition);
						finalActivities.Add(to.Name);
					}
					return;
				}
			}
			transitions.Add(startingTransition);
			if (!activities.Any<ActivityDefinition>((ActivityDefinition a) => a.Name.Equals(to.Name, StringComparison.InvariantCulture)))
			{
				activities.Add(to.Clone() as ActivityDefinition);
			}
			foreach (TransitionDefinition possibleTransitionsForActivity in processDefinition.GetPossibleTransitionsForActivity(startingTransition.To, ForkTransitionSearchType.Both))
			{
				SubprocessUtils.AddActivitiesAndTransitions(processDefinition, activities, transitions, possibleTransitionsForActivity, finalActivities, cutoffNestingLevel);
			}
		}
		internal StartingTransitionNotFoundEventArgs(Guid processId, Guid rootProcessId, ProcessDefinition oldRootScheme, ProcessDefinition newRootScheme, string oldTransitionName)
		{
			this.ProcessId = processId;
			this.RootProcessId = rootProcessId;
			this.OldRootScheme = oldRootScheme;
			this.NewRootScheme = newRootScheme;
			this.OldTransitionName = oldTransitionName;
		}
Ejemplo n.º 4
0
        public override void RegisterFinal(ProcessDefinition pd, List<WorkflowBlock> blocks)
        {
            base.RegisterFinal(pd, blocks);

            //transitions
            var commands = this["Commands"] as List<SimpleCommand>;
            if (commands != null)
            {
                var restrictions = new List<RestrictionDefinition>();
                if (this["_actorRestrictions"] is ActorDefinition)
                {
                    restrictions.Add(RestrictionDefinition.Create(RestrictionType.Allow, (ActorDefinition)this["_actorRestrictions"]));
                }

                foreach (var c in commands)
                {
                    var pdCommand = pd.Commands.Where(pdc => pdc.Name == c.Name).FirstOrDefault();
                    if (pdCommand == null)
                    {
                        pdCommand = CommandDefinition.Create(c.Name);

                        ParameterDefinition pdParameterComment = pd.Parameters.Where(p=> p.Name == "Comment").FirstOrDefault();
                        if(pdParameterComment == null)
                        {
                            pdParameterComment = ParameterDefinition.Create("Comment", typeof(string), ParameterPurpose.Temporary, null);
                            pd.Parameters.Add(pdParameterComment);
                        }

                        pdCommand.InputParameters.Add(new ParameterDefinitionReference()
                        {
                            Name = "Comment",
                            Parameter = pdParameterComment
                        });
                        pd.Commands.Add(pdCommand);
                    }

                    pd.Transitions.Add(new TransitionDefinition()
                    {
                        Name = string.Format("{0}_{1}_{2}", Name, c.ToBlock.Name, c.Name),
                        Classifier = c.Classifier,
                        From = (ActivityDefinition)this["_currentActivity"],
                        To = (ActivityDefinition)c.ToBlock["_currentActivity"],
                        Trigger = new TriggerDefinition(TriggerType.Command)
                        {
                            Command = pdCommand
                        },
                        Conditions = new List<ConditionDefinition>(){
                            ConditionDefinition.Always
                        },
                        Restrictions = restrictions
                    });
                }
            }
        }
Ejemplo n.º 5
0
 public void AddProcessDefinition(Guid schemeId, ProcessDefinition processDefinition)
 {
     if (_cache == null)
     {
         _cache = new Dictionary<Guid, ProcessDefinition> {{schemeId, processDefinition}};
     }
     else
     {
         if (_cache.ContainsKey(schemeId))
             _cache[schemeId] = processDefinition;
         else
             _cache.Add(schemeId, processDefinition);
     }
 }
Ejemplo n.º 6
0
        public override void Register(ProcessDefinition pd, List<WorkflowBlock> blocks)
        {
            base.Register(pd, blocks);

            bool isFinal = this["Commands"] == null
                ? true :
                (this["Commands"] as List<SimpleCommand>).Count == 0;

            //activity
            var c = ActivityDefinition.Create(Name, Name, TryCast<bool>("Initial", false), isFinal, true, true);
            if (c.IsInitial)
            {
                c.AddAction(ActionDefinitionReference.Create("CheckDocumentType", "0", string.Empty));
            }

            //actions
            if (this["AllowEdit"] is bool)
            {
                c.AddAction(ActionDefinitionReference.Create("SetDocumentEditable", "1", this["AllowEdit"].ToString()));
            }

            c.AddAction(ActionDefinitionReference.Create("SetDocumentState", "2", string.Empty));
            c.AddAction(ActionDefinitionReference.Create("UpdateHistory", "3", string.Empty));
            c.AddPreExecutionAction(ActionDefinitionReference.Create("WriteHistory", "0", string.Empty));

            pd.Activities.Add(c);
            this["_currentActivity"] = c;

            //actor
            var users = this["Users"] as string;
            if (!string.IsNullOrWhiteSpace(users))
            {
                var actor = ActorDefinition.Create(string.Format("Actor{0}", Name), "CheckUsers", users);
                pd.Actors.Add(actor);
                this["_actorRestrictions"] = actor;
            }
            else if(c.IsInitial)
            {
                var actor = pd.Actors.FirstOrDefault(a => a.Name == "Author");
                if(actor == null)
                {
                    actor = ActorDefinition.Create("Author", "Author", null);
                    pd.Actors.Add(actor);
                }
                this["_actorRestrictions"] = actor;
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 获取审批流程实例中系统定义的缺省参数及参数值(DefaultDefinitions中定义)
        /// </summary>
        /// <param name="processId"></param>
        /// <param name="processDefinition"></param>
        /// <returns></returns>
        private IEnumerable<ParameterDefinitionWithValue> GetSystemProcessParameters(Guid processId, ProcessDefinition processDefinition)
        {
            WorkflowProcessInstance processInstance = this.GetProcessInstance(processId);
            List<ParameterDefinition> source = (
                from p in processDefinition.Parameters
                where p.Purpose == ParameterPurpose.System
                select p).ToList<ParameterDefinition>();

            var list = new List<ParameterDefinitionWithValue>(source.Count<ParameterDefinition>());

            list.Add(ParameterDefinition.Create(source.Single((ParameterDefinition sp) => sp.Name == DefaultDefinitions.ParameterProcessId.Name), processId));
            list.Add(ParameterDefinition.Create(source.Single((ParameterDefinition sp) => sp.Name == DefaultDefinitions.ParameterPreviousState.Name), (object)processInstance.PreviousState));

            list.Add(ParameterDefinition.Create(source.Single((ParameterDefinition sp) => sp.Name == DefaultDefinitions.ParameterCurrentState.Name), (object)processInstance.StateName));
            list.Add(ParameterDefinition.Create(source.Single((ParameterDefinition sp) => sp.Name == DefaultDefinitions.ParameterPreviousStateForDirect.Name), (object)processInstance.PreviousStateForDirect));
            list.Add(ParameterDefinition.Create(source.Single((ParameterDefinition sp) => sp.Name == DefaultDefinitions.ParameterPreviousStateForReverse.Name), (object)processInstance.PreviousStateForReverse));
            list.Add(ParameterDefinition.Create(source.Single((ParameterDefinition sp) => sp.Name == DefaultDefinitions.ParameterPreviousActivity.Name), (object)processInstance.PreviousActivity));
            list.Add(ParameterDefinition.Create(source.Single((ParameterDefinition sp) => sp.Name == DefaultDefinitions.ParameterCurrentActivity.Name), (object)processInstance.ActivityName));
            list.Add(ParameterDefinition.Create(source.Single((ParameterDefinition sp) => sp.Name == DefaultDefinitions.ParameterPreviousActivityForDirect.Name), (object)processInstance.PreviousActivityForDirect));
            list.Add(ParameterDefinition.Create(source.Single((ParameterDefinition sp) => sp.Name == DefaultDefinitions.ParameterPreviousActivityForReverse.Name), (object)processInstance.PreviousActivityForReverse));
            return list;
        }
Ejemplo n.º 8
0
 private IEnumerable<ParameterDefinitionWithValue> GetProcessParameters(Guid processId, ProcessDefinition processDefinition)
 {
     List<ParameterDefinitionWithValue> list = new List<ParameterDefinitionWithValue>(processDefinition.Parameters.Count<ParameterDefinition>());
     list.AddRange(this.GetPersistedProcessParameters(processId, processDefinition));
     list.AddRange(this.GetSystemProcessParameters(processId, processDefinition));
     return list;
 }
Ejemplo n.º 9
0
 private IEnumerable<ParameterDefinitionWithValue> GetPersistedProcessParameters(Guid processId, ProcessDefinition processDefinition)
 {
     List<ParameterDefinition> persistenceParameters = processDefinition.PersistenceParameters.ToList<ParameterDefinition>();
     List<ParameterDefinitionWithValue> list = new List<ParameterDefinitionWithValue>(persistenceParameters.Count<ParameterDefinition>());
     List<WorkflowProcessInstancePersistence> list2;
     using (PredefinedTransactionScopes.ReadUncommittedSupressedScope)
     {
         using (WorkflowPersistenceModelDataContext workflowPersistenceModelDataContext = base.CreateContext())
         {
             list2 = (
                 from wpip in workflowPersistenceModelDataContext.WorkflowProcessInstancePersistences
                 where wpip.ProcessId == processId && (
                     from pp in persistenceParameters
                     select pp.Name).Contains(wpip.ParameterName)
                 select wpip).ToList<WorkflowProcessInstancePersistence>();
         }
     }
     foreach (WorkflowProcessInstancePersistence persistedParameter in list2)
     {
         ParameterDefinition parameterDefinition = persistenceParameters.Single((ParameterDefinition p) => p.Name == persistedParameter.ParameterName);
         list.Add(ParameterDefinition.Create(parameterDefinition, this.DeserializeParameter(persistedParameter.Value, parameterDefinition.Type)));
     }
     return list;
 }
Ejemplo n.º 10
0
		private static ProcessDefinition InitializeProcessDefinition(this WorkflowRuntime runtime, string schemecode, string schemeid, string processid)
		{
			ProcessDefinition processScheme = null;
			if (!string.IsNullOrWhiteSpace(processid))
			{
				ProcessInstance processInstance = runtime.Builder.GetProcessInstance(new Guid(processid));
				runtime.PersistenceProvider.FillSystemProcessParameters(processInstance);
				processScheme = processInstance.ProcessScheme.Clone() as ProcessDefinition;
				processScheme.AdditionalParams.Clear();
				if (!processScheme.AdditionalParams.ContainsKey("ProcessParameters"))
				{
					processScheme.AdditionalParams.Add("ProcessParameters", processInstance.ProcessParameters);
				}
			}
			else if (!string.IsNullOrWhiteSpace(schemeid))
			{
				processScheme = runtime.Builder.GetProcessScheme(new Guid(schemeid));
				processScheme.AdditionalParams.Clear();
			}
			else if (string.IsNullOrEmpty(schemecode))
			{
				processScheme = new ProcessDefinition();
			}
			else
			{
				processScheme = runtime.Builder.GetProcessSchemeForDesigner(schemecode);
				processScheme.AdditionalParams.Clear();
			}
			Designer.InitializeAdditionalParams(runtime, processScheme);
			return processScheme;
		}
Ejemplo n.º 11
0
		private static void InitializeAdditionalParams(WorkflowRuntime runtime, ProcessDefinition pd)
		{
			if (!pd.AdditionalParams.ContainsKey("Rules"))
			{
				pd.AdditionalParams.Add("Rules", runtime.RuleProvider.GetRules());
			}
			if (!pd.AdditionalParams.ContainsKey("TimerTypes"))
			{
				pd.AdditionalParams.Add("TimerTypes", 
					from TimerType t in Enum.GetValues(typeof(TimerType))
					select t.ToString());
			}
			if (!pd.AdditionalParams.ContainsKey("Actions"))
			{
				pd.AdditionalParams.Add("Actions", runtime.ActionProvider.GetActions());
			}
			if (!pd.AdditionalParams.ContainsKey("Namespaces"))
			{
				pd.AdditionalParams.Add("Usings", CodeActionsCompiller.Usings);
			}
		}
Ejemplo n.º 12
0
        private void UpdateChildrenSchemes(ProcessInstancesTree currentNode, ProcessDefinition oldRootScheme, ProcessDefinition newRootScheme, List<SchemaWasChangedEventArgs> changes)
        {
            if (!currentNode.Children.Any<ProcessInstancesTree>())
            {
                return;
            }
            foreach (ProcessInstancesTree child in currentNode.Children)
            {
                ProcessInstance processInstance = this.Builder.GetProcessInstance(child.Id);
                bool flag = false;
                try
                {
                    this.SetProcessNewStatus(processInstance, ProcessStatus.Running);
                    this.PersistenceProvider.FillSystemProcessParameters(processInstance);
                    if (processInstance.CurrentActivity.IsAutoSchemeUpdate)
                    {
                        TransitionDefinition transitionDefinition = null;
                        try
                        {
                            transitionDefinition = newRootScheme.FindTransition(child.Name);
                        }
                        catch (TransitionNotFoundException transitionNotFoundException)
                        {
                        }
                        if (transitionDefinition != null)
                        {
                            ProcessDefinition processDefinition = this.Builder.CreateNewSubprocessScheme(newRootScheme, transitionDefinition);
                            this.BindProcessToNewScheme(processInstance, processDefinition, changes);
                        }
                        else if (this.OnStartingTransitionNotFound == null)
                        {
                            this.DropProcesses(new List<Guid>()
							{
								processInstance.ProcessId
							}, currentNode);
                            flag = true;
                            continue;
                        }
                        else
                        {
                            StartingTransitionNotFoundEventArgs startingTransitionNotFoundEventArg = new StartingTransitionNotFoundEventArgs(processInstance.ProcessId, processInstance.RootProcessId, oldRootScheme, newRootScheme, child.Name);
                            this.OnStartingTransitionNotFound(this, startingTransitionNotFoundEventArg);
                            if (startingTransitionNotFoundEventArg.Decision == StartingTransitionNotFoundEventArgs.SubprocessUpdateDecision.DropProcess)
                            {
                                this.DropProcesses(new List<Guid>()
								{
									processInstance.ProcessId
								}, currentNode);
                                flag = true;
                                continue;
                            }
                            else if (startingTransitionNotFoundEventArg.Decision == StartingTransitionNotFoundEventArgs.SubprocessUpdateDecision.Ignore)
                            {
                                continue;
                            }
                            else if (startingTransitionNotFoundEventArg.Decision == StartingTransitionNotFoundEventArgs.SubprocessUpdateDecision.StartWithNewTransition)
                            {
                                transitionDefinition = newRootScheme.FindTransition(startingTransitionNotFoundEventArg.NewTransitionName);
                                ProcessDefinition processDefinition1 = this.Builder.CreateNewSubprocessScheme(newRootScheme, transitionDefinition);
                                this.BindProcessToNewScheme(processInstance, processDefinition1, changes);
                            }
                        }
                    }
                    this.UpdateChildrenSchemes(child, oldRootScheme, newRootScheme, changes);
                }
                finally
                {
                    if (!flag)
                    {
                        this.SetIdledStatusAfterSchemaUpdated(processInstance);
                    }
                }
            }
        }
Ejemplo n.º 13
0
 private void BindProcessToNewScheme(ProcessInstance processInstance, ProcessDefinition updatedProcessScheme, List<SchemaWasChangedEventArgs> changes)
 {
     bool ısSchemeObsolete = processInstance.IsSchemeObsolete;
     bool ısDeterminingParametersChanged = processInstance.IsDeterminingParametersChanged;
     processInstance.SchemeId = updatedProcessScheme.Id;
     processInstance.IsSchemeObsolete = false;
     processInstance.IsDeterminingParametersChanged = false;
     processInstance.ProcessScheme = updatedProcessScheme;
     this.PersistenceProvider.BindProcessToNewScheme(processInstance, true);
     SchemaWasChangedEventArgs schemaWasChangedEventArg = new SchemaWasChangedEventArgs()
     {
         DeterminingParametersWasChanged = ısDeterminingParametersChanged,
         ProcessId = processInstance.ProcessId,
         SchemeId = processInstance.SchemeId,
         SchemaWasObsolete = ısSchemeObsolete
     };
     changes.Add(schemaWasChangedEventArg);
     processInstance.SchemeId = updatedProcessScheme.Id;
     processInstance.IsSchemeObsolete = false;
     processInstance.IsDeterminingParametersChanged = false;
     processInstance.ProcessScheme = updatedProcessScheme;
     this.PersistenceProvider.BindProcessToNewScheme(processInstance, true);
 }
Ejemplo n.º 14
0
 public static ProcessInstance Create(Guid schemeId, Guid processId, ProcessDefinition processScheme, bool isSchemeObsolete, bool isDeterminingParametersChanged)
 {
     return new ProcessInstance() {SchemeId = schemeId, ProcessId = processId, ProcessScheme = processScheme, IsSchemeObsolete = isSchemeObsolete, IsDeterminingParametersChanged = isDeterminingParametersChanged};
 }
Ejemplo n.º 15
0
        public override void Register(ProcessDefinition pd, List<WorkflowBlock> blocks)
        {
            base.Register(pd, blocks);

            var actor = ActorDefinition.Create(string.Format("LegalEntitySigns_{0}", Name), "BudgetItemIsLegalEntityNeedSigns", Name);
            pd.Actors.Add(actor);
            this["_actorRestrictions"] = actor;
        }
Ejemplo n.º 16
0
        public override void RegisterFinal(ProcessDefinition pd, List<WorkflowBlock> blocks)
        {
            //transitions
            var commands = this["Commands"] as List<SimpleCommand>;
            if (commands != null)
            {
                var restrictions = new List<RestrictionDefinition>();
                if (this["_actorRestrictions"] is ActorDefinition)
                {
                    restrictions.Add(RestrictionDefinition.Create(RestrictionType.Allow, (ActorDefinition)this["_actorRestrictions"]));
                }

                foreach (var c in commands)
                {
                    var pdCommand = pd.Commands.Where(pdc => pdc.Name == c.Name).FirstOrDefault();
                    if (pdCommand == null)
                    {
                        pdCommand = CommandDefinition.Create(c.Name);
                        pd.Commands.Add(pdCommand);
                    }

                    if (c.Classifier == TransitionClassifier.Direct)
                    {
                        //CA
                        pd.Transitions.Add(new TransitionDefinition()
                        {
                            Name = string.Format("{0}_{1}_{2}", Name, c.ToBlock.Name, c.Name),
                            Classifier = c.Classifier,
                            From = (ActivityDefinition)this["_currentActivity"],
                            To = (ActivityDefinition)this["_currentActivity"],
                            Trigger = new TriggerDefinition(TriggerType.Command)
                            {
                                Command = pdCommand
                            },
                            Conditions = new List<ConditionDefinition>(){
                                ConditionDefinition.Always
                            },
                            Restrictions = restrictions
                        });

                        //AC
                        pd.Transitions.Add(new TransitionDefinition()
                        {
                            Name = string.Format("{0}_{1}_{2}", Name, c.ToBlock.Name, "Auto"),
                            Classifier = c.Classifier,
                            From = (ActivityDefinition)this["_currentActivity"],
                            To = (ActivityDefinition)c.ToBlock["_currentActivity"],
                            Trigger = new TriggerDefinition(TriggerType.Auto),
                            Conditions = new List<ConditionDefinition>(){
                                ConditionDefinition.Create("Action", ActionDefinitionReference.Create("BudgetItemIsLegalEntitySignsComplete", "0", Name), "false", "true")
                            }
                        });
                    }
                    else
                    {
                        pd.Transitions.Add(new TransitionDefinition()
                        {
                            Name = string.Format("{0}_{1}_{2}", Name, c.ToBlock.Name, c.Name),
                            Classifier = c.Classifier,
                            From = (ActivityDefinition)this["_currentActivity"],
                            To = (ActivityDefinition)c.ToBlock["_currentActivity"],
                            Trigger = new TriggerDefinition(TriggerType.Command)
                            {
                                Command = pdCommand
                            },
                            Conditions = new List<ConditionDefinition>(){
                                ConditionDefinition.Always
                            },
                            Restrictions = restrictions
                        });
                    }
                }
            }
        }
Ejemplo n.º 17
0
		public static WorkflowCommand Create(Guid processId, TransitionDefinition transitionDefinition, ProcessDefinition processDefinition)
		{
			if (transitionDefinition.Trigger.Type != TriggerType.Command || transitionDefinition.Trigger.Command == null)
			{
				throw new InvalidOperationException();
			}
			List<CommandParameter> commandParameters = new List<CommandParameter>(transitionDefinition.Trigger.Command.InputParameters.Count);
			commandParameters.AddRange(
				from p in transitionDefinition.Trigger.Command.InputParameters
				select new CommandParameter()
				{
					ParameterName = p.Name,
					TypeName = p.Parameter.Type.AssemblyQualifiedName,
					LocalizedName = processDefinition.GetLocalizedParameterName(p.Name, CultureInfo.CurrentCulture),
					Value = null
				});
			WorkflowCommand workflowCommand = new WorkflowCommand()
			{
				CommandName = transitionDefinition.Trigger.Command.Name,
				LocalizedName = processDefinition.GetLocalizedCommandName(transitionDefinition.Trigger.Command.Name, CultureInfo.CurrentCulture),
				Parameters = commandParameters,
				ProcessId = processId,
				ValidForActivityName = transitionDefinition.From.Name,
				ValidForStateName = transitionDefinition.From.State,
				Classifier = transitionDefinition.Classifier
			};
			return workflowCommand;
		}
Ejemplo n.º 18
0
		public static CodeActionsInvoker CompileCodeActions(ProcessDefinition processDefinition, Guid schemeId)
		{
			List<CodeActionDefinition> codeActions = processDefinition.CodeActions;
			if (!codeActions.Any<CodeActionDefinition>())
			{
				return new CodeActionsInvoker();
			}
			string str = string.Format("CodeActions_{0}_{1}", processDefinition.Name, schemeId.ToString("N"));
			return CodeActionsCompiller.CodeActionsInvoker(str, codeActions);
		}
Ejemplo n.º 19
0
		public static ProcessDefinition Create(string name, List<ActorDefinition> actors, List<ParameterDefinition> parameters, List<CommandDefinition> commands, List<TimerDefinition> timers, List<ActivityDefinition> activities, List<TransitionDefinition> transitions, List<LocalizeDefinition> localization, List<CodeActionDefinition> codeActions, OptimaJet.Workflow.Core.Model.DesignerSettings designerSettigs)
		{
			ProcessDefinition processDefinition = new ProcessDefinition()
			{
				Activities = activities,
				Actors = actors,
				Commands = commands,
				Timers = timers,
				Name = name,
				Parameters = parameters,
				Transitions = transitions,
				Localization = localization,
				CodeActions = codeActions,
				DesignerSettings = designerSettigs
			};
			return processDefinition;
		}