Beispiel #1
0
        public WorkflowDefinition(IEnumerable <DesignerItemViewModelBase> items, IEnumerable <ConnectorViewModel> connectors, ActivityItemViewModel startActivity)
        {
            var activities = new List <ActivityDefinition>();

            foreach (var i in items)
            {
                var activityDefinition = new ActivityDefinition();
                var activityInfo       = i as ActivityItemViewModel;
                activityDefinition.Id = i.Id;
                if (activityInfo != null)
                {
                    activityDefinition.Name     = activityInfo.ActivityName;
                    activityDefinition.Guard    = activityInfo.SelectedActivityGuardType.ToString();
                    activityDefinition.Settings = activityInfo.Settings.Select(s => new Setting()
                    {
                        Name  = s.Key,
                        Value = s.Value
                    }).ToArray();
                }
                else
                {
                    activityDefinition.Name = "UnknownActivity_" + i.Id;
                }
                activities.Add(activityDefinition);
            }
            Activities = activities.ToArray();
            var transitions = connectors.Select(c => new TransitionDefinition()
            {
                Id               = c.Id,
                ConditionText    = c.ConditionText ?? "true",
                SourceActivityId = IdMod(c.SourceConnectorInfo.DataItem),
                TargetActivityId = IdMod((c.SinkConnectorInfo as FullyCreatedConnectorInfo)?.DataItem)
            }).ToList();

            if (startActivity != null)
            {
                var startTransition = new TransitionDefinition()
                {
                    ConditionText    = "true",
                    SourceActivityId = -1,
                    TargetActivityId = startActivity.Id
                };
                long maxId = 0;
                if (transitions != null && transitions.Count > 0)
                {
                    maxId = transitions.Max(t => t.Id);
                }
                startTransition.Id = maxId + 1;
                transitions.Add(startTransition);
            }
            Transitions = transitions.ToArray();
            Settings    = new Setting[]
            {
                new Setting()
                {
                    Name  = "statemachinetype",
                    Value = "SomeStateMachineTypeClass"
                }
            };
            Name = "Registered Workflow 66";
        }
Beispiel #2
0
 public Transition(TransitionDefinition definition) : base(definition)
 {
 }