.net之工作流工程展示及代码分享(二)工作流引擎
在介绍完表单类的时候,接下来介绍工作流引擎,主要由四个类组成,分别是流程、流程步骤、流程实例、流程步骤实例类。
流程类:
1 [Serializable] 2 public class Flow 3 { 4 [XmlAttribute] 5 public Guid FlowId { get; set; } 6 [XmlAttribute] 7 public string FlowName { get; set; } 8 public List<FlowStep> FlowSteps { get; set; } 9 [XmlAttribute] 10 public string FlowCategory { get; set; } 11 [XmlAttribute] 12 public bool Enabled { get; set; } 13 [XmlAttribute] 14 public DateTime CreateDate { get; set; } 15 public Person Creator { get; set; } 16 17 public DateTime? CanRequestDateStart { get; set; } 18 19 public DateTime? CanRequestDateEnd { get; set; } 20 21 public string CreaterName 22 { 23 get 24 { 25 if(Creator!=null) 26 return Creator.PersonName; 27 return string.Empty; 28 } 29 } 30 [XmlAttribute] 31 public Guid FormId { get; set; } 32 [XmlAttribute] 33 public string FormName { get; set; } 34 public WorkflowConstant.AccessMode AccessMode { get; set; } 35 [XmlAttribute] 36 public short PeriodTime { get; set; } 37 [XmlAttribute] 38 public string RequestRights { get; set; } 39 [XmlAttribute] 40 public string RequestGroup { get; set; } 41 public string AccessModeDesc 42 { 43 get 44 { 45 switch (RequestRights) 46 { 47 case "-不限-": 48 return "所有人"; 49 default: 50 return RequestRights+": "; 51 } 52 } 53 } 54 55 [XmlAttribute] 56 public string RoleGroups { 57 get 58 { 59 if (!string.IsNullOrEmpty(RequestGroup)) 60 { 61 return string.Join("、", RequestGroup.Split(',').Select(g => g.Split('|')[0])); 62 } 63 else 64 { 65 return string.Empty; 66 } 67 } 68 } 69 }
View Code
流程步骤类:
1 [Serializable] 2 public class FlowStep 3 { 4 [XmlAttribute] 5 public Guid StepId { get; set; } 6 [XmlAttribute] 7 public Guid PreviousStepId { get; set; } 8 [XmlAttribute] 9 public Guid NextStepId { get; set; } 10 [XmlAttribute] 11 public int SequenceId { get; set; } 12 [XmlAttribute] 13 public string StepName { get; set; } 14 [XmlAttribute] 15 public string RightGroupTitle { get; set; } 16 public List<Guid> CanWriteFormContolIds { get; set; } 17 [XmlAttribute] 18 public bool CanReturnToPreviousStep { get; set; } 19 [XmlAttribute] 20 public bool CanReturnToFirstStep { get; set; } 21 [XmlAttribute] 22 public bool AllowSelectAuditor { get; set; } 23 public WorkflowConstant.CounterSignatureMode CounterSignatureMode { get; set; } 24 [XmlAttribute] 25 public bool IsStartStep { get; set; } 26 [XmlAttribute] 27 public bool IsLastStep { get; set; } 28 [XmlAttribute] 29 public bool CanUploadFile { get; set; } 30 [XmlAttribute] 31 public bool MustUploadFile { get; set; } 32 [XmlAttribute] 33 public int UploadFileCount { get; set; } 34 }
View Code
流程实例类:
1 [Serializable] 2 public class FlowInstance 3 { 4 [XmlAttribute] 5 public Guid FlowInstantId { get; set; } 6 public Flow Flow { get; set; } 7 8 public List<FlowInstanceStep> FlowStepInstances { get; set; } 9 public Person Creator { get; set; } 10 [XmlAttribute] 11 public DateTime CreateDate { get; set; } 12 [XmlAttribute] 13 public DateTime LastDealDate { get; set; } 14 [XmlAttribute] 15 public WorkflowConstant.SignatureStatus FlowStatus { get; set; } 16 17 public string FlowStatusName 18 { 19 get 20 { 21 switch (FlowStatus) 22 { 23 case WorkflowConstant.SignatureStatus.Start: 24 return "进行中"; 25 break; 26 case WorkflowConstant.SignatureStatus.Undeal: 27 return "未处理"; 28 break; 29 case WorkflowConstant.SignatureStatus.PartialPassed: 30 return "部分通过"; 31 break; 32 case WorkflowConstant.SignatureStatus.Passed: 33 return "通过"; 34 break; 35 case WorkflowConstant.SignatureStatus.OutDated: 36 return "过期"; 37 break; 38 case WorkflowConstant.SignatureStatus.Canceled: 39 return "取消"; 40 break; 41 case WorkflowConstant.SignatureStatus.RejectToPreviousStep: 42 return "退回上一步"; 43 break; 44 case WorkflowConstant.SignatureStatus.RejectToFirstStep: 45 return "退回第一步"; 46 break; 47 case WorkflowConstant.SignatureStatus.Stopped: 48 return "停止"; 49 break; 50 case WorkflowConstant.SignatureStatus.Finish: 51 return "结束"; 52 break; 53 default: 54 return string.Empty; 55 } 56 } 57 } 58 59 public DateTime? EndDate 60 { 61 get 62 { 63 if (Flow != null) 64 { 65 return CreateDate.AddDays(Flow.PeriodTime); 66 } 67 else return null; 68 } 69 } 70 71 public string CurrentStepDisplayName { get; set; } 72 }
View Code
流程步骤实例类:
1 [Serializable] 2 public class FlowInstanceStep 3 { 4 [XmlAttribute] 5 public Guid StepInstanceId { get; set; } 6 public List<WorkflowPersonSignature> PersonSignatures { get; set; } 7 8 public SerializableDictionary<Guid, string> WriteValues { get; set; } 9 10 public FlowStep FlowStep { get; set; } 11 [XmlAttribute] 12 public DateTime CreateDate { get; set; } 13 [XmlAttribute] 14 public DateTime ProcessDate { get; set; } 15 [XmlAttribute] 16 public WorkflowConstant.SignatureStatus StepStatus { get; set; } 17 public List<AttachFile> FileList { get; set; } 18 }
View Code
这几个类使用了“贫血模型”
设定好流程和步骤,以后每次建立的流程实例都是从流程获取到的。
本系列导航:
- .net之工作流工程展示及代码分享(预告)
- .net之工作流工程展示及代码分享(一)工作流表单
- .net之工作流工程展示及代码分享(二)工作流引擎
- .net之工作流工程展示及代码分享(三)数据存储引擎
- .net之工作流工程展示及代码分享(四)主控制类
- .net之工作流工程展示及代码分享(五)前端交互
转载于:https://www.cnblogs.com/thanks/p/4305884.html
.net之工作流工程展示及代码分享(二)工作流引擎相关推荐
- 椭圆曲线加密——椭圆曲线的动态展示python代码分享
学校信息安全课老师让我来讲一下椭圆曲线加密,当看到椭圆曲线公式的时候,就想研究一下改变a或者b会对椭圆曲线的形状带来哪些影响,于是自己搜集一些资料绘制出了随a, b变化的椭圆曲线.a,b使用进度条来改 ...
- 基于Vue和axios的音乐播放器——悦听音乐效果展示及代码分享
接口还是网易的,毕竟它家的公开,也就搜搜网易云音乐的歌了.不想敲的,可以用下面的 gitee地址: link. https://gitee.com/lyh1999/enjoy-listening-mu ...
- 实用封装代码 分享二维码插件(qrcode)
点击分享的图标,会出现一个二维码,扫描这个二维码会在手机上出现当前分享的页面 先引入官方插件 下载插件(qrcode) 插件地址: https://www.npmjs.com/package/qrco ...
- python有趣的代码-分享几款由quot;Python”语言编写的quot;有趣、恶搞、好玩”的程序代码...
为提高大家对"Python"编程语言的学习兴趣,今天给大家分享几款有趣的Python程序代码,感兴趣的小伙伴可以跟着学习借鉴哦!qq进群:156846986可以获取Python学习 ...
- 代码分享:面波数据快速成图
代码分享:面波数据快速成图 前言 目前,物探数据主要用surfer软件成图,surfer软件具有强大的插值和绘图功能,成图比较美观.但是,生产过程中大量的物探数据,依靠excel和surfer来成图耗 ...
- 【第十一届泰迪杯B题产品订单的数据分析与需求预测产品订单的数据分析与需求预测 】第二大问代码分享+解题思路(EDA数据再探索+LightGBM模型)
[第十一届泰迪杯B题产品订单的数据分析与需求预测]第二大问代码分享+解题思路(EDA数据再探索+LightGBM模型) 写在前面: 拖了这么长时间,一方面是我在找实习面试准备.另一方面是在做第二问 ...
- 第五届“泰迪杯”数据分析技能赛 经验代码分享
第五届"泰迪杯"数据分析技能赛 经验/代码分享 品牌:"泰迪杯"数据分析技能赛 组织单位:泰迪杯数据分析技能赛组织委员会.广东泰迪智能科技股份有限公司.广东省工 ...
- kaggle 泰坦尼克项目实战(详细代码分享)——集成学习Soft voting
顺利注册完kaggle之后,终于可以开始上手撸项目啦! 先从大名鼎鼎的泰坦尼克号开始吧! 尽管网上有很多大神进行了"入门级别"的代码分享讲解,但我看了一轮仍然觉得对新手不够友好. ...
- python代码大全表解释-Python中顺序表的实现简单代码分享
顺序表python版的实现(部分功能未实现) 结果展示: 代码示例: #!/usr/bin/env python # -*- coding:utf-8 -*- class SeqList(object ...
最新文章
- E: GPG 错误:http://developer.download.nvidia.com Release: 下列签名无效: NODATA 1 NODATA 2...
- 雷蛇灯光配置文件_没想到吧,雷蛇竟然出61键小尺寸机械键盘了!雷蛇猎魂光蛛迷你版上手...
- IPv6实验1_IPv6地址配置
- 注解形式控制器 数据验证,类型转换(3)
- jacob jar包_java 文档在线预览 Windows版本(jacob)
- 如何围绕业务特性,做企业信息化?
- weblogic修改banner_Via WLST Monitor Weblogic Server
- nexus安装过程中遇到的一些问题
- 我所能理解的编程境界
- 基于蓝墨云班课的翻转课堂实践
- 计算机和游戏建立不了连接,如何建立局域网我们寝室的电脑想连接起来玩游戏我们每个人都有网号我 爱问知识人...
- python实现模糊综合评判
- 基于`IRIS`,动态解析`HL7`消息
- 解决npm ERR! Unexpected end of JSON input while parsing near的方法汇总
- 计算机网络——(3)网络体系结构和协议
- 今天,就让坏得很的糟老头子来告诉你顺序表的基操,零基础也可get!
- python 输出数据到Excel表格
- 我心中的计算机作文500,我眼中的作文500字
- 创意发明:单片机做的半导体智能制冷小冰箱 原理图和程序源代码等技术文件
- 我是如何自学新技术的,自学方式有哪些
热门文章
- 如何调整金格电子章服务器印章_大型集团公司的印章管理方法
- c语言个人通讯录管理系统实验报告_C语言实现个人通讯录管理系统
- java 2分钟_java – 为什么我的应用程序启动时间超过2分钟?
- 能量平衡_500kA 铝电解槽的能量平衡分析
- rust怎么用items刷东西_装修贷卡怎么刷?不同银行的用不同的POS机刷才对
- java runnable 启动_Java开发笔记(九十七)利用Runnable启动线程
- dumpbin发现没有入口函数_详解VS2019 dumpbin查看DLL的导出函数
- ladar:16线激光雷达(雷神)
- CloudCompare 的简单的使用说明
- Python Qt GUI设计:如何调整组件布局比例?(拓展篇—1)