.net之工作流工程展示及代码分享(二)工作流引擎
在介绍完表单类的时候,接下来介绍工作流引擎,主要由四个类组成,分别是流程、流程步骤、流程实例、流程步骤实例类。
流程类:
[Serializable]
public class Flow
{
[XmlAttribute]
public Guid FlowId { get; set; }
[XmlAttribute]
public string FlowName { get; set; }
public List<FlowStep> FlowSteps { get; set; }
[XmlAttribute]
public string FlowCategory { get; set; }
[XmlAttribute]
public bool Enabled { get; set; }
[XmlAttribute]
public DateTime CreateDate { get; set; }
public Person Creator { get; set; } public DateTime? CanRequestDateStart { get; set; } public DateTime? CanRequestDateEnd { get; set; } public string CreaterName
{
get
{
if(Creator!=null)
return Creator.PersonName;
return string.Empty;
}
}
[XmlAttribute]
public Guid FormId { get; set; }
[XmlAttribute]
public string FormName { get; set; }
public WorkflowConstant.AccessMode AccessMode { get; set; }
[XmlAttribute]
public short PeriodTime { get; set; }
[XmlAttribute]
public string RequestRights { get; set; }
[XmlAttribute]
public string RequestGroup { get; set; }
public string AccessModeDesc
{
get
{
switch (RequestRights)
{
case "-不限-":
return "所有人";
default:
return RequestRights+": ";
}
}
} [XmlAttribute]
public string RoleGroups {
get
{
if (!string.IsNullOrEmpty(RequestGroup))
{
return string.Join("、", RequestGroup.Split(',').Select(g => g.Split('|')[]));
}
else
{
return string.Empty;
}
}
}
}
流程步骤类:
[Serializable]
public class FlowStep
{
[XmlAttribute]
public Guid StepId { get; set; }
[XmlAttribute]
public Guid PreviousStepId { get; set; }
[XmlAttribute]
public Guid NextStepId { get; set; }
[XmlAttribute]
public int SequenceId { get; set; }
[XmlAttribute]
public string StepName { get; set; }
[XmlAttribute]
public string RightGroupTitle { get; set; }
public List<Guid> CanWriteFormContolIds { get; set; }
[XmlAttribute]
public bool CanReturnToPreviousStep { get; set; }
[XmlAttribute]
public bool CanReturnToFirstStep { get; set; }
[XmlAttribute]
public bool AllowSelectAuditor { get; set; }
public WorkflowConstant.CounterSignatureMode CounterSignatureMode { get; set; }
[XmlAttribute]
public bool IsStartStep { get; set; }
[XmlAttribute]
public bool IsLastStep { get; set; }
[XmlAttribute]
public bool CanUploadFile { get; set; }
[XmlAttribute]
public bool MustUploadFile { get; set; }
[XmlAttribute]
public int UploadFileCount { get; set; }
}
流程实例类:
[Serializable]
public class FlowInstance
{
[XmlAttribute]
public Guid FlowInstantId { get; set; }
public Flow Flow { get; set; } public List<FlowInstanceStep> FlowStepInstances { get; set; }
public Person Creator { get; set; }
[XmlAttribute]
public DateTime CreateDate { get; set; }
[XmlAttribute]
public DateTime LastDealDate { get; set; }
[XmlAttribute]
public WorkflowConstant.SignatureStatus FlowStatus { get; set; } public string FlowStatusName
{
get
{
switch (FlowStatus)
{
case WorkflowConstant.SignatureStatus.Start:
return "进行中";
break;
case WorkflowConstant.SignatureStatus.Undeal:
return "未处理";
break;
case WorkflowConstant.SignatureStatus.PartialPassed:
return "部分通过";
break;
case WorkflowConstant.SignatureStatus.Passed:
return "通过";
break;
case WorkflowConstant.SignatureStatus.OutDated:
return "过期";
break;
case WorkflowConstant.SignatureStatus.Canceled:
return "取消";
break;
case WorkflowConstant.SignatureStatus.RejectToPreviousStep:
return "退回上一步";
break;
case WorkflowConstant.SignatureStatus.RejectToFirstStep:
return "退回第一步";
break;
case WorkflowConstant.SignatureStatus.Stopped:
return "停止";
break;
case WorkflowConstant.SignatureStatus.Finish:
return "结束";
break;
default:
return string.Empty;
}
}
} public DateTime? EndDate
{
get
{
if (Flow != null)
{
return CreateDate.AddDays(Flow.PeriodTime);
}
else return null;
}
} public string CurrentStepDisplayName { get; set; }
}
流程步骤实例类:
[Serializable]
public class FlowInstanceStep
{
[XmlAttribute]
public Guid StepInstanceId { get; set; }
public List<WorkflowPersonSignature> PersonSignatures { get; set; } public SerializableDictionary<Guid, string> WriteValues { get; set; } public FlowStep FlowStep { get; set; }
[XmlAttribute]
public DateTime CreateDate { get; set; }
[XmlAttribute]
public DateTime ProcessDate { get; set; }
[XmlAttribute]
public WorkflowConstant.SignatureStatus StepStatus { get; set; }
public List<AttachFile> FileList { get; set; }
}
这几个类使用了“贫血模型”
设定好流程和步骤,以后每次建立的流程实例都是从流程获取到的。
本系列导航:
- .net之工作流工程展示及代码分享(预告)
- .net之工作流工程展示及代码分享(一)工作流表单
- .net之工作流工程展示及代码分享(二)工作流引擎
- .net之工作流工程展示及代码分享(三)数据存储引擎
- .net之工作流工程展示及代码分享(四)主控制类
- .net之工作流工程展示及代码分享(五)前端交互
.net之工作流工程展示及代码分享(二)工作流引擎的更多相关文章
- .net之工作流工程展示及代码分享(四)主控制类
现在应该讲主控制类了,为了不把系统弄得太复杂,所以就用一个类作为主要控制类(服务类),作为前端.后端.业务逻辑的控制类. WorkflowService类的类图如下: 该类的构造函数: public ...
- .net之工作流工程展示及代码分享(三)数据存储引擎
数据存储引擎是本项目里比较有特色的模块. 特色一,使用接口来对应不同的数据库.数据库可以是Oracle.Sqlserver.MogoDB.甚至是XML文件.采用接口进行对应: public inter ...
- .net之工作流工程展示及代码分享(一)工作流表单
Workflow表单的作用是能够在客户端进行表单设计,然后在流程中动态开放哪些输入框可以供用户填写. 在这里我扩展了一个常用的WebEditor工具——KindEditor,能够插入自定义的html符 ...
- .net之工作流工程展示及代码分享(预告)
最近在帮公司做一个工作流程序模块,要求是可以嵌入到各种现有的程序中去.我想把自己制作的思路和过程同大家分享. 先上一张结构图: 由于该项目我一个人做,所以系统结构不能太复杂. 用到的技术主要有:DDD ...
- net之工作流工程展示及代码分享(记录)
http://www.cnblogs.com/thanks/p/4183235.html
- JAVA基础代码分享--DVD管理
问题描述 为某音像店开发一个迷你DVD管理器,最多可存6张DVD,实现碟片的管理. 管理器具备的功能主要有: 1.查看DVD信息. 菜单选择查看功能,展示DVD的信息. 2.新增DVD信息 选择新增功 ...
- 一款WP小游戏代码分享
首先声明游戏是H5的代码,当然游戏部分不是我写的,感谢@LeZhi的分享,关于H5我还在学习,这里只是简单介绍一下如何把一款现成的H5游戏封装成一款WP游戏(当然也可以做成Windows游戏). 大家 ...
- Unity多媒体展示项目经验分享-ImageEffect+动态绑定
Unity多媒体展示项目经验分享-ImageEffect+动态绑定+网络通信 <ignore_js_op> “海尔科技展墙”是去年年初我们为上海家电博览会制作的一个多媒体展项,有限的工期以 ...
- Java生鲜电商平台-生鲜售后系统的退款架构设计与代码分享
Java生鲜电商平台-生鲜售后系统的退款架构设计与代码分享 说明:任何一个电商行业都涉及到退货与退款的问题,但是生鲜电商行业还设有一个显著的特点,那就是换货.在人性面前,各种各样的退货,退款,换货的售 ...
随机推荐
- java分享第七天-01(Hashmap和Hashtable的区别&Property)
一.Hashmap和Hashtable的区别 1 主要:Hashtable线程安全,同步,效率相对低下 HashMap线程不安全,非同步,效率相对高 2 父类:Hashtable是Dictionary ...
- Python标准异常topic
Python标准异常topic AssertionError 断言语句 (assert) ...
- HDU 5833 Zhu and 772002(高斯消元)
题意:给n个数,从n个数中抽取x(x>=1)个数,这x个数相乘为完全平方数,求一共有多少种取法,结果模1000000007. 思路:每个数可以拆成素数相乘的形式,例如: x1 2=2^1 * 3 ...
- 常用Jquery插件整理
虽然自己也写过插件,但JQuery插件种类的繁多,大多时候,我还是使用别人写好的插件,这些都是我用了同类插件里较为不错的一些,今天就整理一下公开放出来. UI: jquery.HooRay(哈哈,自己 ...
- 实战Java虚拟机之三“G1的新生代GC”
今天开始实战Java虚拟机之三:“G1的新生代GC”. 总计有5个系列 实战Java虚拟机之一“堆溢出处理” 实战Java虚拟机之二“虚拟机的工作模式” 实战Java虚拟机之三“G1的新生代GC” 实 ...
- Windows 7 常用快捷键
常用的快捷键 Win键+D 回到桌面/当前界面(切换)Win键+M 回到桌面Win键+E 资源管理器Win键+R 运行 Win键+U 控制面板->所有控制面板项->轻松访问中心 Win键+ ...
- Java实现MySQL数据库备份(一)
下班了,利用闲暇时间总结一下如何使用Java语言实现MySQL数据库备份: import java.io.BufferedReader; import java.io.File; import jav ...
- gcc编译命令行依赖库的指定顺序
gcc链接过程中定义了三个集合:可重定位目标文件集合E.未解析符号集合U和已定义符号集合D,链接基本流程如下: 1) 按命令行指定顺序依次处理每个目标文件和库文件: 2) 如果为目标文件,将其加入集合 ...
- Yii入门☞应用
Yii 应用的静态结构 应用: require可以有返回值,Yii中经常返回数组用以配置.以前只知道引用文件成功返回1. controllerMap属性允许你指定一个控制器ID到任意控制器类,修改配置 ...
- 微博开放平台api使用
前言:微博开放平台提供了微博数据的api接口,不仅可以直接通过api调用微博服务发布微博查询微博,更重要的是,可以在自己的网站上获得新浪微博api的授权,调用微博的某些内容,就好像我们再网站中看到好文 ...