我们都知道对于一个OA系统来说,最重要的也是不可或缺的一个重要环节那就是对于工作流的实现,为此,最近专门在学习如何使用WorkFlow,问前辈,前辈也说道K2工作流引擎挺不错,自己同时也翻阅了一些资料,但因为自己这个OA项目主要是采用微软的ASP.NET MVC 来开发的,所以还是决定使用微软的那一套WorkFlow工作流引擎。不得不说,微软在对于客户体验这方面做的还真是不错的。为了方面学习,我也是通过一个小案例来学习WorkFlow,在这里也拿出来和大家共同分享学习。
小案例(请假工作流)
说明:
1.程序集:system.Activities
2.Xaml文件:工作流文件设计的类型,最终会被处理为一个类
3.状态机工作流(开发中使用的类型)
首先:创建一个Windows窗体应用程序,命名WorkFlowDemo
注意:为了便于工作流的展示,把当前项目的属性-----》服务,把输入类型由Windows应用程序改为控制台应用程序
接下来,简单点设计一下窗体页面
设计一下流程图:(状态机控件在工具箱)对于其中的工具使用,可以自己简单学习,很容易上手
前期工作完成接下来就是代码实现的时候了,为窗体的单击按钮注册事件
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading.Tasks; 9 using System.Windows.Forms; 10 using System.Activities; 11 12 namespace WindowsFormsApplication1 13 { 14 public partial class Form1 : Form 15 { 16 public Form1() 17 { 18 InitializeComponent(); 19 } 20 21 //创建一个工作流对象 22 WorkflowApplication wfapp; 23 private void btnsave_Click(object sender, EventArgs e) 24 { 25 26 //1.准备好工作流中需要的参数 27 Dictionary<string, object> dict = new Dictionary<string, object>();//用来向工作流传递参数 28 dict.Add("LeaveDays", int.Parse(txtDays.Text)); 29 30 //2.创建一个工作流应用对象 31 wfapp = new WorkflowApplication(new LeaveActivity(), dict); 32 33 34 //3.调用wfapp对象的Run方法 35 wfapp.Run(); 36 } 37 38 private void btnjinli_Click(object sender, EventArgs e) 39 { 40 bool result = radioButton1.Checked; 41 42 //唤醒书签 43 wp.ResumeBookmark("经理审批", result); 44 } 45 46 private void button2_Click(object sender, EventArgs e) 47 { 48 bool result = radioButton3.Checked; 49 wp.ResumeBookmark("财务总监审批", result); 50 } 51 } 52 }