写在前面:本人文采不好,零星写过几篇随笔,但都不尽人意,本着共同学习共同进步的原则,还是打算把近期开发的一个通用流程的软件拿出来与大家分享。本流程软件能满足鄙人接触到了解到的一般的流程实现(由于接触到的流程有限,以及对流程理解的不够透彻,流程引擎中不免有设计不足或考虑不周,也希望大神们能多多指点),如果读者在阅读或使用过程中遇到什么问题或有什么想法,希望能拿出来与大家分享,我们共同去学习去完善这套流程引擎。本随笔打算只涉及流程引擎部分,可视化流程设计随后做单独的随笔推出。写作水平有限,望读者多多体谅...(如有问题可随时联系笔者。邮箱:455274752@qq.com)。欢迎加入流程交流群:251834323

  一、需求

  开发一套通用流程引擎软件,在主软件可以通过简单的注册、引用,即可完成软件流程部门的设计开发。

  二、抽象解决方案

  1.通过EntityFramework的CodeFirst实现流程有关的数据库表的创建。

  2.通过SilverLight实现流程的可视化操作。

  三、项目结构说明

 通用流程设计

  四、项目结构分析及代码

  一、Entities流程实体

  定义流程相关的数据库实体。

  通用流程设计

  1.WorkflowInitializer.cs 初始化数据库类,定义创建数据库时的默认数据。相关类定义如下:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Data.Entity;
 4 using System.Linq;
 5 using System.Text;
 6 using Workflow.Entities;
 7 
 8 namespace Workflow.Entities
 9 {
10     /// <summary>
11     /// 初始化数据库数据
12     /// </summary>
13     public class WorkflowInitializer : DropCreateDatabaseIfModelChanges<WorkflowDB>
14     {
15         /// <summary>
16         /// 重写数据库初始化方法
17         /// </summary>
18         /// <param name="context"></param>
19         protected override void Seed(WorkflowDB context)
20         {
21             var modules = new List<ModuleList> { 
22                 new ModuleList{ModuleName="模版一",ModuleExplain="模版一"}
23             };
24             modules.ForEach(i => context.ModuleLists.Add(i));
25             context.SaveChanges();
26 
27             var mains = new List<WorkflowMain> { 
28                 new WorkflowMain { WorkflowName = "流程一",WorkflowStatus="1",ModuleID=1,Owner="qdq",WorkflowExplain="主流程说明",IsDefault=true }
29             };
30             mains.ForEach(i => context.WorkflowMains.Add(i));
31             context.SaveChanges();
32 
33             var details = new List<WorkflowDetailed> { 
34                 new WorkflowDetailed{Top_Y=10,Left_X=10,SetpExplain="开始",StepStatus="1",Deadline=3,Nunciator="qdq",
35                     IsCirculation=false,ProcessingPersonnel="qdq",ProcessingPersonnelMode="Person",WorkflowID=1,StepID=0,
36                     StepName="开始",UpStep=null,NextStep=1,ProcessingMode="1"},
37                 new WorkflowDetailed{Top_Y=200,Left_X=200,SetpExplain="步骤一",StepStatus="1",Deadline=3,Nunciator="qdq",
38                     IsCirculation=false,ProcessingPersonnel="qdq",ProcessingPersonnelMode="Person",WorkflowID=1,StepID=1,
39                     StepName="步骤一",UpStep=-1,NextStep=2,ProcessingMode="1"},
40                 new WorkflowDetailed{Top_Y=350,Left_X=350,SetpExplain="步骤二",StepStatus="1",Deadline=3,Nunciator="qdq,cyl",
41                     IsCirculation=false,ProcessingPersonnel="qdq",ProcessingPersonnelMode="Person",WorkflowID=1,StepID=2,
42                     StepName="步骤二",UpStep=-1,NextStep=-1,ProcessingMode="1"},
43                 new WorkflowDetailed{Top_Y=500,Left_X=500,SetpExplain="结束",StepStatus="1",Deadline=3,Nunciator="qdq",
44                     IsCirculation=false,ProcessingPersonnel="qdq",ProcessingPersonnelMode="Person",WorkflowID=1,StepID=-1,
45                     StepName="结束",UpStep=null,NextStep=0,ProcessingMode="1"}
46             };
47             details.ForEach(i => context.WorkflowDetaileds.Add(i));
48             context.SaveChanges();
49 
50             var tasks = new List<TaskList> { 
51                 new TaskList{ MessageType=1,TaskSN=1,StepStatus="1",HandleType=1,HandleStatus=true,HandlePerson="qdq",
52                     HandleTime=DateTime.Now,Receive=DateTime.Now,Opinion="同意",WorkflowDetailed_ID=2,FromID="20130001"}
53             };
54             tasks.ForEach(i => context.TaskLists.Add(i));
55             context.SaveChanges();
56 
57             var annexs = new List<AnnexList> { 
58                 new AnnexList{AnnexAddress="测试",AnnexName="测试",TaskList_ID=1}
59             };
60             annexs.ForEach(i => context.AnnexLists.Add(i));
61             context.SaveChanges();
62 
63             base.Seed(context);
64         }
65     }
66 }
View Code

相关文章:

  • 2022-12-23
  • 2021-04-13
  • 2022-03-05
  • 2021-11-20
  • 2021-11-12
  • 2021-09-22
  • 2021-12-08
猜你喜欢
  • 2021-08-08
  • 2021-04-27
  • 2021-09-28
  • 2021-11-08
  • 2021-11-25
  • 2022-03-09
  • 2021-08-18
相关资源
相似解决方案