Java状态模式实现工作流_关于使用“状态模式”做工作流概要。
usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceWF
{//工程名称:通过工作流状态进行工作流管理///Author:Evan Lee///编写时间:2011-05-08///博客地址:http://www.cnblogs.com/magic_evan///classProgram
{//通过工作流状态进行工作流管理//staticvoidMain(string[] args)
{intstart=0;while(true)
{//模板方式的工作流可以编写成模板工厂类的方式int.TryParse(Console.ReadLine(),outstart);
Work work=null;
DictionarystepList=newDictionary();//工作流模板的每一步的的状态switch(start)
{case1://输入1的时候启用第1个工作流的模板work=newWork(1);
stepList.Add(1,0);
stepList.Add(2,0);
work.StepList=stepList;break;case2://输入2的时候启用第2个工作流的模板work=newWork(2);
stepList.Add(1,1);
stepList.Add(2,0);
stepList.Add(3,0);
work.StepList=stepList;break;default:return;//其它跳出}
work.DoWork();
}
}
}//工作流抽象状态publicabstractclassState
{publicabstractvoidDoWork(Work w);
}//工作流1publicclasswf1 : State
{publicoverridevoidDoWork(Work w)
{if(w.IsStop)return;if(w.StepList[w.CurrentStep]>0)
{
Console.WriteLine("{0}步工作流完成!显示内容", w.CurrentStep=w.CurrentStep-1);
}else{
Console.WriteLine("{0}步工作流未完成!显示输入内容", w.CurrentStep=w.CurrentStep-1);
w.IsStop=true;
}
w.SetState(newwf1_1());
w.DoWork();
}
}//工作流1-1publicclasswf1_1 : State
{publicoverridevoidDoWork(Work w)
{if(w.IsStop)return;if(w.StepList[w.CurrentStep]>0)
{
Console.WriteLine("{0}步工作流完成!显示内容", w.CurrentStep=w.CurrentStep-1);
}else{
Console.WriteLine("{0}步工作流未完成!显示输入内容", w.CurrentStep=w.CurrentStep-1);
w.IsStop=true;
}
w.SetState(newwfend());
w.DoWork();
}
}//工作流2publicclasswf2 : State
{publicoverridevoidDoWork(Work w)
{if(w.IsStop)return;if(w.StepList[w.CurrentStep]>0)
{
Console.WriteLine("{0}步工作流完成!显示内容", w.CurrentStep=w.CurrentStep-1);
}else{
Console.WriteLine("{0}步工作流未完成!显示输入内容", w.CurrentStep=w.CurrentStep-1);
w.IsStop=true;
}
w.SetState(newwf2_1());
w.DoWork();
}
}//工作流2-1publicclasswf2_1 : State
{publicoverridevoidDoWork(Work w)
{if(w.IsStop)return;if(w.StepList[w.CurrentStep]>0)
{
Console.WriteLine("{0}步工作流完成!显示内容", w.CurrentStep=w.CurrentStep-1);
}else{
Console.WriteLine("{0}步工作流未完成!显示输入内容", w.CurrentStep=w.CurrentStep-1);
w.IsStop=true;
}
w.SetState(newwf2_2());
w.DoWork();
}
}//工作流2-2publicclasswf2_2 : State
{publicoverridevoidDoWork(Work w)
{if(w.IsStop)return;if(w.StepList[w.CurrentStep]>0)
{
Console.WriteLine("{0}步工作流完成!显示内容", w.CurrentStep=w.CurrentStep-1);
}else{
Console.WriteLine("{0}步工作流未完成!显示输入内容", w.CurrentStep=w.CurrentStep-1);
w.IsStop=true;
}
w.SetState(newwfend());
w.DoWork();
}
}publicclasswfend : State
{publicoverridevoidDoWork(Work w)
{
Console.WriteLine("工作流完成!显示内容");
}
}//工作publicclassWork
{privateState current;publicWork(intwfModel)
{switch(wfModel)
{case1: current=newwf1();break;case2: current=newwf2();break;
}
}privateDictionarystepList=newDictionary();//步骤,状态///publicDictionaryStepList
{get{returnstepList; }set{ stepList=value; }
}//是否启用下一个工作流///privateboolisStop=false;publicboolIsStop
{get{returnisStop; }set{ isStop=value; }
}//当前的步骤///privateintcurrentStep=0;publicintCurrentStep
{get{return(currentStep+=1); }set{ currentStep=value; }
}//设置当前的工作流实现//publicvoidSetState(State s)
{
current=s;
}//操作工作流///publicvoidDoWork()
{
current.DoWork(this);
}
}
}
Java状态模式实现工作流_关于使用“状态模式”做工作流概要。相关推荐
- stm32l0的停止模式怎么唤醒_关于Mac睡眠模式,你不知道的那些事
关于Mac电脑上的睡眠模板,你知道多少呢?对于你一台全新的Mac,我们最关注的可能就是电池的寿命.随着我们的使用时间增长,mac电脑的电池容量会逐渐减少,最后不得不使用电源.想要更好的保养电池寿命,我 ...
- 策略模式和工厂模式的区别_设计模式系列 — 策略模式
点赞再看,养成习惯,公众号搜一搜[一角钱技术]关注更多原创技术文章. 本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章. 前言 23种设计模式速记 单例(si ...
- java中mvc模式是什么_什么是MVC模式 MVC模式中三者之间关系
MVC模式设计的初衷是,一旦一个项目的代码量变大的时候,src文件夹中可以写java代码,web文件夹中也可以写jsp代码.除此之外src中还可以写好多包,web文件夹中还可以写好多文件夹,现在假如新 ...
- java的mvc模式是什么_什么是mvc模式
MVC是一个架构,或者说是一个设计模式,它就是强制性使应用程序的输入,处理和输出分开.将一个应用程序分为三个部分:Model,View,Controller. 原理图: 分析: Model模型(完成业 ...
- java游戏boss是冰龙_炉石传说冒险模式冰龙区Boss技能及过关卡牌奖励
炉石传说冒险模式:纳克萨玛斯的诅咒将在2014年8月20日凌晨开放最后一个大区:冰龙巢穴,让我们先人一步了解构造区的所有相关资讯吧! 1.萨菲隆 生命值 普通难度:30 英雄模式:45 英雄技能 冰霜 ...
- java游戏boss是冰龙_炉石传说冒险模式冰龙区BOSS克尔苏加德打法攻略
<炉石传说>冒险模式"纳克斯玛斯的诅咒"最后一个区域"冰龙区"现已开放.本区仅有两个BOSS,但是难度显然比之前的区域有所提高,英雄模式下更是如此. ...
- 策略模式和工厂模式的区别_设计模式之工厂模式-工厂方法模式
设计模式之工厂模式-工厂方法模式 大家好,欢迎来到污污弹公司,今天司小司又接到了一个新活-披萨项目. 来源:凯哥Java(kaigejava) 需求: 披萨项目: 要方便披萨品种的扩展.要便于维护.要 ...
- activiti 工作流_分享:springboot中关于工作流activiti的搭建
概念 工作流产品使用activiti的算是比较多了,自带了一套UI界面,可以直接使用,用来设计流程,下面简单总结一下它的步骤: 1 设计模型 2 发布为流程,一个模型可以发布多个版本的流程 3 建立一 ...
- 手机900e模式如何救_手机护眼模式真的有用吗?长时间看手机如何保护视力?...
[智友问答]手机护眼模式真的有用吗?长时间看手机如何保护视力 最近笔者刚刚更换了新手机,有一天在使用过程无意中碰到了某个开关,屏幕颜色变成了淡淡的黄色,等反应过来才明白碰到了护眼模式的开关,手机上的护 ...
最新文章
- CODE FESTIVAL 2017 qual B
- 2021年5月信息系统项目管理师上午真题
- python中class __str__怎么用_python中下划线的作用
- java 数字运算异常_Java基础之:异常及异常处理
- Selenium API-WebElement 属性
- ​知者见于未萌:百度CTO王海峰与中国 AI 三十年
- android手机charles证书下载
- 使用ArcGIS软件进行投影变换和坐标校正
- 深度linux deepin 内存,【转载】深度Deepin国产操作系统使用体验报告!
- LVGL V8之Event bubbling
- CUDA总结:Occupancy
- vue网页打印针式打印机内容显示不全
- java下载压缩包文件zip
- qt 打印 刻度尺 曲线 复杂图像
- ASF无法启动?试试这两种操作吧
- 【SwiftUI模块】0007、SwiftUI新手指引-新手指示-聚光灯介绍说明
- 2021(接近2022)linux(ubuntu16.04)安装cuda跑深度学习步骤以及踩坑过程(ELF标头无效、导入torch后torch.cuda.is_available()为False等等)
- 拥有全国性物流网络却只靠卖书赚微薄利润的李国庆, 最终倒下了
- 超融合一体机成为数据中心的必需品
- C++从零开始区块链:P2P模块之UDP数据包分组排序
热门文章
- 关于java的一个典型的动态代理
- leetcode_linearList03
- mac下没有设置 SVN_EDITOR....错误解决方法
- POJ 2186 Popular Cows
- irsend 树莓派 php,用树莓派给家用电器加上智能(红外篇)
- 判断file空_File类的基本用法
- php 调用vs2013 dll文件,VScode能编辑DLL库文件么
- oracle在日期区间分页查询,Oracle 日期分页
- 3gpp协议_【5G学习笔记】3GPP 5G协议分类清单大全
- python如何训练模型生产_手把手教你用Python构建你的第一个多标签图像分类模型(附案例)...