文章来源:IT工程技术网 http://www.systhinker.com/html/29/n-11529.html
从莫约10年前,我就在等这一天的来临。
程式设计,与电子电路的设计一样,都是希望可以透过一些方式,将可以重复使用的功能元件化之后,方便重复使用。而在Test-Driven Developement当中,元件也是进行单元测试的重要单位。在设计电子电路时,我们可以透过一些方便的Layout软体,帮助我们设计线路(流程),并且测试结果:
(如果各位不是电子相关科系背景的,可以参考这一篇: http://www.mobile01.com/topicdetail.php?f=300&t=533106 )
然而,在程式设计这一个领域中,我们却仍然像是大一电子实验一样,拿着面包版在做劳作:
当BziTalk Server出现之后,Orchestration Designer提供了图形化的操作介面,让开发人员可以透过图形化的方式,快速的将应用程式的工作流程设计出来,并且应用在系统整合的情境当中。从那时开始,我每次上BizTalk Server的课,就要向大家说:"图形化操作才是程式设计的王道啊!!!" -- 无奈大家Coding 习惯了,对于我所描述的情境似乎无法想像。
但随着网际网路应用程式与云端技术的发展,系统的复杂度已非以往的程式设计观念可以满足;同样的,为了维持软体的开发品质以及降低维护成本,我们也必须要有更好的方式可以快速的去检视程式码的内容。因此,Windows Workflow Foundation (WF)诞生了!
在我的上一本书当中,曾经为各位介绍WF在.NET 3.5当中的操作方式。随着即将到来的.NET 4 + Visual Studio 2010,WF 4也提供了更直觉、也更像电子电路设计的操作方式,实现了“ Application = Code + Workflow ”的境界!例如,我们希望在程式启动时,可以根据现在的系统时间,显示不同的问候语。第一步,你可以先撰写程式,将显示不同问候语的程式,定义成不同的CodeActivity类别:
CodeActivity类别就是你的程式的最基础执行单元 ,在设计应用程式的流程时,这些CodeActivity类别会自动出现在工具箱中:
然后你就可以使用这些自订的CodeActivity类别,加上WF 4内建的活动,设计出你需要的流程:
然后,在流程中设定需要的一些变数,以及透过属性视窗设定资料传递的规则:
最后,在程式码中,透过WorkflowInvoker物件类别的Invoke方法,就可以载入工作流程定义并执行:
执行结果如下:
如何,是不是很简单?
同时,透过这样的方式所设计出来的工作流程,将来也可以很容易直接的被引用到其他的工作流程中重复使用,自然的就有元件化与模组化的效果。而每一个单独的CodeActivity类别与工作流程,因为都是独立运作的单元,因此也很容易就可以透过Visual Studio 2010开发工具,进行单元测试,提升程式码模组的可靠度。
文章来源:IT工程技术网 http://www.systhinker.com/html/29/n-11529.html