回想:

在一个月前,我们刚刚回想了面对象至关重要的部分:托付,详细请移步我们博客:面向对象——一起来复习托付与事件!关于这篇博客的详细内容,不再赘述,在这里我们主要讨论在工作流中的应用及他的详细怎样解耦我们的业务,界面!

对照:

普通实现:

工作流的理想实现:

认真观察我们发现,状态信息有工作流自带的持久层维护,我们要做的和下文章的自然就变成了调用逻辑,在这一层,怎么解耦,就提上了日程,结果我们发现,解决问题,非托付不能胜任!详细的情况呢,请大家先看代码:

代码演示样例:

<span style="font-size:18px;"> public delegate T DelegateEvent<T>(T message);
public sealed class CodeActivityevent<T> : CodeActivity
{ /// <summary>
/// 传入參数,案件实体
/// </summary>
public InArgument<T> CaseIn { get; set; }
public InArgument<DelegateEvent<T>> WFEventIn { get; set; } /// <summary>
/// 传出參数,案件实体
/// </summary>
public OutArgument<T> CaseOut { get; set; } /// <summary>
/// 运行创建案件
/// </summary>
/// <param name="context"></param>
protected override void Execute(CodeActivityContext context)
{
//获取传入參数的两种方法
T CaseUse = CaseIn.Get<T>(context);
DelegateEvent<T> WFEvent = WFEventIn.Get<DelegateEvent<T>>(context);
CaseUse = context.GetValue(this.CaseIn);
//调用业务逻辑层,将获取的实体传入,接收返回的实体,并将其付给传出參数 //TODO:基础活动:改动实体的逻辑层
//返回的案件实体CaseBack
T CaseBack = WFEvent(CaseUse); //将返回的实体传出
//CaseOut.Set(context, info);
context.SetValue(CaseOut, CaseBack); }
}</span>

关键代码:

1,

<span style="font-size:18px;"> public delegate T DelegateEvent<T>(T message);</span>

2,

<span style="font-size:18px;">DelegateEvent<T> WFEvent = WFEventIn.Get<DelegateEvent<T>>(context);</span>
<span style="font-size:18px;"> //返回的案件实体CaseBack
T CaseBack = WFEvent(CaseUse);</span>

有了这些代码我们就可在设计工作流界面配置详细的操作,而操作在详细的类中并不写死,传入的方法是什么就是什么!

配置实现:



总结:

使用泛型后,详细运行方法也和前台进行了解耦,在显示层我们剩余的工作,就是收集数据,传入工作流,剩余的工作交予工作流处理,而工作流是我们配置出来的,通过配置工作流生成xml做到业务逻辑的灵活变动和扩展的实现,可是什么样的抽象都是有限制的,抽象的粒度是要均衡的,经我们研究,对节点的抽象,及部分公共流程的抽象,是我们能够控制的范围之内,这样我们就能够尽量适应客户的变化!

经过这一系列的抽象,我们发现,我们开发的工作流,已经脱离了我们当初简单使用的范畴,通过对泛型,托付的技术积累,我们对不论什么业务的抽象,都那么水到渠成,这时,我认识到一个道理,我们重要的不不过了解很多其它的技术,还有对技术应用场景的深入剖析,和面向对象认识的提升!

WF4.0——升级技能:托付应用的更多相关文章

  1. WF4.0——升级技能:泛型应用

    前提: 在项目的开发中.我们知道,增加泛型,通过对类型的封装,进行抽象后.能够大大降低我们代码量,在项目中,泛型能够说是高级project师必备的技能之中的一个.也是面向对象的核心"抽象&q ...

  2. 【转】WF4.0 (基础篇)

    转自:http://www.cnblogs.com/foundation/category/215023.html 作者:WXWinter  ——  兰竹菊梅★春夏秋冬☆ —— wxwinter@16 ...

  3. jackson2.5.0升级到2.7.0

    开发环境:spring-mvc4.1.7.jackson2.7.0 问题描述:项目中将原来的jackson2.5.0升级到2.7.0,导致服务调用出错. mvc相关的配置文件如下: <?xml ...

  4. 系统补丁更新导致MVC3.0.0升级到3.0.1的问题解决

    在更新了系统补丁之后,会不知觉的将MVC3.0.0升级到MVC3.0.1的问题,解决的思路如下: 1.全部MVC引用使用NuGet进行包的管理. 2.单独把MVC库抽离出来,然后放在单独的项目文件夹, ...

  5. 基于WF4.0的公文管理系统

    系统功能说明 公文管理 通过定义公文的基本信息,并将它按照工作流的定义流转实现公文的管理.包含以下功能: )公文创建:用户能够将格式化文本作为公文上传到系统中,并选择工作流启动流程. )公文审批:具有 ...

  6. WF4.0 基础篇 (十八) Flowchar

    本节主要介绍WF4 中 Flowchart的使用 本文例子下载: http://files.cnblogs.com/foundation/FlowcharSample.rar 本文例子说明 Flowc ...

  7. 李洪强iOS开发之-环信02.1_环信 SDK 2.x到3.0升级文档

    李洪强iOS开发之-环信02.1_环信 SDK 2.x到3.0升级文档 SDK 2.x 至 3.0 升级指南 环信 SDK 3.0 升级文档 3.0 中的核心类为 EMClient 类,通过 EMCl ...

  8. 【转】WF4.0实战系列索引

    转自:http://www.cnblogs.com/zhuqil/archive/2010/07/05/wf4-in-action-index.html 此系列的工作流文件案例比较多点,实用性好. W ...

  9. UiAutomator2.0升级填坑记

    UiAutomator2.0升级填坑记 SkySeraph May. 28th 2017 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点:www.sk ...

随机推荐

  1. The Priest Mathematician

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=31329#problem/F f[0] = 1 , f[ i ] = f[ i - 1 ] ...

  2. 2013杭州网络赛C题HDU 4640(模拟)

    The Donkey of Gui Zhou Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/O ...

  3. POJ 1741 Tree【Tree,点分治】

    树上的算法真的很有意思……哈哈. 给一棵边带权树,问两点之间的距离小于等于K的点对有多少个. 将无根树转化成有根树进行观察.满足条件的点对有两种情况:两个点的路径横跨树根,两个点位于同一颗子树中. 如 ...

  4. 如何使用W5300实现ADSL连接(一)

    在介绍W5300连接ADSL之前,先给大家简单介绍一下WIZnet W5300这款芯片. W5300是WIZnet公司的一款单芯片器件,采用0.18μmCMOS工艺,内部集成10/100M以太网控制器 ...

  5. JSON XML IO数据操作

    一.XML解析 通过继承org.xml.sax.helpers.DefaultHandler类,覆写characters(),startDocument(),startElement(),endEle ...

  6. DDFT

    得知DIP文章4日 傅立叶变换数学原理将可能完全被引入,下仅仅实现代码.观察下结果,公式在上一篇博客中已经描写叙述 上代码: // // main.c // Fourer2D // // Create ...

  7. linux 内核头文件 linux kernel header

    概述:在进行有关系统软件的安装的时候(编译一个新的驱动,或者安装一个系统级别的测试工具,例如systemtap),经常需要重新编译内核,相应的问题往往与内核头文件有关.那么,什么是内核头文件,为什么需 ...

  8. ActionBar开启Overlay Mode(覆盖模式)

    以下内容参考自Android官网http://developer.android.com/training/basics/actionbar/overlaying.html#EnableOverlay ...

  9. BZOJ 2730: [HNOI2012]矿场搭建( tarjan )

    先tarjan求出割点.. 割点把图分成了几个双连通分量..只需dfs找出即可. 然后一个bcc有>2个割点, 那么这个bcc就不用建了, 因为一定可以走到其他救援出口. 只有一个割点的bcc就 ...

  10. CentOS6.5实现rsync+inotify实时同步

    参考博文: 参考1:CentOS6.5实现rsync+inotify实时同步 参考2:inotify-tools+rsync实时同步文件安装和配置 CentOS 6.3下rsync服务器的安装与配置  ...