Example #1
0
        //添加活动
        public static ModelItem AddActivity(this ModelItem modelItem, object item, int index = -1)
        {
            if (!modelItem.CanAddItem(item))
            {
                return(null);
            }
            ModelItem result = null;
            Activity  value;

            if (modelItem.IsSequence() && (value = (item as Activity)) != null)
            {
                ModelItemCollection collection = modelItem.Properties["Activities"].Collection;
                result = ((index == -1) ? collection.Add(value) : collection.Insert(index, value));
            }
            else if (modelItem.IsFlowchart())
            {
                FlowNode flowNode = null;
                if (item != null)
                {
                    FlowNode flowNode2;
                    if ((flowNode2 = (item as FlowNode)) == null)
                    {
                        Activity activity;
                        if ((activity = (item as Activity)) != null)
                        {
                            Activity action = activity;
                            flowNode = new FlowStep
                            {
                                Action = action
                            };
                        }
                    }
                    else
                    {
                        FlowNode flowNode3 = flowNode2;
                        flowNode = flowNode3;
                    }
                }
                if (flowNode != null)
                {
                    ModelItemCollection collection2 = modelItem.Properties["Nodes"].Collection;
                    result = ((index == -1) ? collection2.Add(flowNode) : collection2.Insert(index, flowNode));
                }
            }
            else if (modelItem.IsStateMachine() && (item is State || item is FinalState))
            {
                State state = (item as State) ?? new State
                {
                    IsFinal = true,
                };

                ModelItemCollection collection3 = modelItem.Properties["States"].Collection;
                result = ((index == -1) ? collection3.Add(state) : collection3.Insert(index, state));
            }
            return(result);
        }