public void Init()
        {
            CleanUp();
            model = new WorkflowDefinitionModel
            {
                Value = new WorkflowDefinition
                {
                    ID = "unittest1",
                    Name = "unit test 1",
                    Enabled = 1,
                    Creator = "frank",
                },

            };
            ActivityDefinitionModel activity1 = new ActivityDefinitionModel
            {
                Value = new ActivityDefinition
                {
                    ID = "unittestactivity1",
                    Name = "activity1",
                    Page = "page1",
                    Title = "title1",
                    Creator = "frank",
                    WorkflowDefinitionID = "unittest1",
                    Type = 1,
                    Enabled = 1,
                }
            };
            ActivityDefinitionModel activity2 = new ActivityDefinitionModel
            {
                Value = new ActivityDefinition
                {
                    ID = "unittestactivity2",
                    Name = "activity2",
                    Page = "page2",
                    Title = "title2",
                    Creator = "frank",
                    WorkflowDefinitionID = "unittest1",
                    Enabled = 1,
                    Type = 1,
                }
            };

            ActivityDefinitionModel activity3 = new ActivityDefinitionModel
            {
                Value = new ActivityDefinition
                {
                    ID = "unittestactivity3",
                    Name = "activity3",
                    Page = "page3",
                    Title = "title3",
                    Creator = "frank",
                    WorkflowDefinitionID = "unittest1",
                    Type = 1,
                    Enabled = 1,
                }
            };
            LinkDefinitionModel link1 = new LinkDefinitionModel
            {
                Value = new LinkDefinition
                {
                    ID = "unittestlink1",
                    Name = "link1",
                    FromActivityDefinitionID = "unittestactivity1",
                    ToActivityDefinitionID = "unittestactivity2",
                    WorkflowDefinitionID = "unittest1",
                },
                FromActivityDefinition = activity1,
                ToActivityDefinition = activity2,
            };
            LinkDefinitionModel link2 = new LinkDefinitionModel
            {
                Value = new LinkDefinition
                {
                    ID = "unittestlink2",
                    Name = "link2",
                    FromActivityDefinitionID = "unittestactivity2",
                    ToActivityDefinitionID = "unittestactivity3",
                    WorkflowDefinitionID = "unittest1",
                },
                FromActivityDefinition = activity2,
                ToActivityDefinition = activity3,
            };
            model.Root = activity1;
            model.Save();
        }
        public void Init()
        {
            CleanUp();
            model = new WorkflowDefinitionModel
            {
                Value = new WorkflowDefinition
                {
                    ID      = "unittest1",
                    Name    = "unit test 1",
                    Enabled = 1,
                    Creator = "frank",
                },
            };
            ActivityDefinitionModel activity1 = new ActivityDefinitionModel
            {
                Value = new ActivityDefinition
                {
                    ID      = "unittestactivity1",
                    Name    = "activity1",
                    Page    = "page1",
                    Title   = "title1",
                    Creator = "frank",
                    WorkflowDefinitionID = "unittest1",
                    Type    = 1,
                    Enabled = 1,
                }
            };
            ActivityDefinitionModel activity2 = new ActivityDefinitionModel
            {
                Value = new ActivityDefinition
                {
                    ID      = "unittestactivity2",
                    Name    = "activity2",
                    Page    = "page2",
                    Title   = "title2",
                    Creator = "frank",
                    WorkflowDefinitionID = "unittest1",
                    Enabled = 1,
                    Type    = 1,
                }
            };

            ActivityDefinitionModel activity3 = new ActivityDefinitionModel
            {
                Value = new ActivityDefinition
                {
                    ID      = "unittestactivity3",
                    Name    = "activity3",
                    Page    = "page3",
                    Title   = "title3",
                    Creator = "frank",
                    WorkflowDefinitionID = "unittest1",
                    Type    = 1,
                    Enabled = 1,
                }
            };
            LinkDefinitionModel link1 = new LinkDefinitionModel
            {
                Value = new LinkDefinition
                {
                    ID   = "unittestlink1",
                    Name = "link1",
                    FromActivityDefinitionID = "unittestactivity1",
                    ToActivityDefinitionID   = "unittestactivity2",
                    WorkflowDefinitionID     = "unittest1",
                },
                FromActivityDefinition = activity1,
                ToActivityDefinition   = activity2,
            };
            LinkDefinitionModel link2 = new LinkDefinitionModel
            {
                Value = new LinkDefinition
                {
                    ID   = "unittestlink2",
                    Name = "link2",
                    FromActivityDefinitionID = "unittestactivity2",
                    ToActivityDefinitionID   = "unittestactivity3",
                    WorkflowDefinitionID     = "unittest1",
                },
                FromActivityDefinition = activity2,
                ToActivityDefinition   = activity3,
            };

            model.Root = activity1;
            model.Save();
        }
        public static WorkflowDefinitionModel Load(string id)
        {
            var mapper = MapperHelper.GetMapper();
            WorkflowDefinitionDao wfdao = new WorkflowDefinitionDao(mapper);
            ActivityDefinitionDao addao = new ActivityDefinitionDao(mapper);
            LinkDefinitionDao linkdao = new LinkDefinitionDao(mapper);
            ActivityAuthDefinitionDao aadd = new ActivityAuthDefinitionDao(mapper);
            WorkflowDefinition workflow = null;
            List<ActivityDefinition> activityList = new List<ActivityDefinition>();
            List<LinkDefinition> linkList = new List<LinkDefinition>();
            List<ActivityAuthDefinition> authList = new List<ActivityAuthDefinition>();
            WorkflowDefinitionModel model = null;
            var item = cache.GetItem(id);
            if (item != null)
            {
                model = item.Value as WorkflowDefinitionModel;
                return model;
            }
            workflow = wfdao.Query(new WorkflowDefinitionQueryForm { ID = id, Enabled = 1 }).FirstOrDefault();
            activityList = addao.Query(new ActivityDefinitionQueryForm { WorkflowDefinitionID = id, Enabled = 1 });
            linkList = linkdao.Query(new LinkDefinitionQueryForm { WorkflowDefinitionID = id });
            authList = aadd.Query(new ActivityAuthDefinitionQueryForm { WorkflowDefinitionID = id });
            if (workflow != null)
            {
                List<ActivityDefinitionModel> activityModelList = new List<ActivityDefinitionModel>();
                List<LinkDefinitionModel> linkModelList = new List<LinkDefinitionModel>();
                model = new WorkflowDefinitionModel
                {
                    value = workflow,
                };
                bool foundRoot = false;
                foreach (var link in linkList)
                {
                    linkModelList.Add(new LinkDefinitionModel
                    {
                        Value = link,
                    });
                }
                foreach (var activity in activityList)
                {
                    List<LinkDefinitionModel> preLinks = new List<LinkDefinitionModel>();
                    var preLinksTemp = linkModelList.FindAll(t => t.Value.ToActivityDefinitionID == activity.ID);

                    List<LinkDefinitionModel> nextLinks = new List<LinkDefinitionModel>();
                    var nextLinksTemp = linkModelList.FindAll(t => t.Value.FromActivityDefinitionID == activity.ID);

                    ActivityDefinitionModel activitymodel = new ActivityDefinitionModel
                    {
                        Value = activity,
                    };
                    if (authList != null)
                    {
                        activitymodel.AuthDefinition = authList.FindAll(t => t.ActivityDefinitionID == activity.ID);
                    }
                    activitymodel.PreLinks = preLinksTemp;
                    activitymodel.NextLinks = nextLinksTemp;
                    activityModelList.Add(activitymodel);
                    //没有父连接说明是根节点
                    if (!foundRoot && preLinksTemp.Count == 0)
                    {
                        model.Root = activitymodel;
                        foundRoot = true;
                    }
                }
                item = new CacheItem(id, model);
                cache.AddItem(item, 30 * 60);
            }

            return model;
        }