实例演示如何使用AgileEAS.NET SOA平台工作流进行业务流程自定义

by 魏琼东 2012.2.28 18:51
  在说这个案例之前先向大家转发一个简单的招聘信息,我们团队目前需要招聘两名技术助理人员,跟随我们做一些产品开发和技术咨询工作,欢迎有志同道合的朋友与我们合作:http://job.cnblogs.com/offer/19632/。 一、案例业务流程说明 在前一篇文章AgileEAS.NET SOA 中间件平台工作流系统介绍之中我简单的向大家介绍了AgileEAS.NET SOA平台工作流系统的基本介绍,本文我将向大家以一个真实的案例向大家介绍AgileEAS.NET SOA平台工作流系统的应用。 今天我们的例子来自于医疗信息化之中的一个简单案例,关于医院药库/药房药品报损业务的处理过程,现实业务流程如以定义: 目前的业务流程是这么要求的,由药房管理人员发起一个报损申请,然后由药房负责人审批,早批不通过则由药房管理人员修改后再次提交,通过则由药剂科长审核,审核通过之后由药房管理人员确认报损,否则终止本次报损业务处理。 对于不同地域、不同规模、不同经营性质的医院来说,对于药品的报损处理流程都可能不一样,那么摆在医疗开发商面前的一个很麻烦问题就是业务流程的定制处理,对于此类问题使用传统方法一直是一个非常棘手的问题,可能不同医院的业务流程的变动必须会导致程序代码的变动,进行造成医疗软件开发商产品版本管理混乱、产品实施周期过长进而导致开发商的间接管理成本和项目总体成本急剧提高。 二、应用AgileEAS.NET SOA平台工作流重组流程 对于上述问题,我们可以使用AgileEAS.NET SOA平台所提供的工作流系统进行业务流程自定义,使用工作流平台驱动业务数据达到业务流程再造的目的。 我们来仔细看上述业务流程就会发现,这是一个及其经典的“申请-早批-确认”业务处理流程,对于“申请”和“确认”都是一个比较固定的操作,但是对于“申请-早批-确认”的处理过程,则是一个极不确定的过程,比如一个小型医疗机构可以就需要一个简单的审批即可,但是对于一个大型的医疗机构,其审批可以不止二级审批,可能会有三级或多级审批处理。 如果我们开发两个功能模块“药房报损申请/申批”、“药房报损确认”以及定义一个工作流“药房报损申批流程”,并让“药房报损申批流程”与“药房报损申请/申批”相结合,由工作流驱动“药房报损申请/申批”按照“药房报损申批流程”进行处理,并在处理完成之由“药房报损确认”完成药品报损,那么我们是否就可以实现这种高度灵活的流程自定义呢,回答当然是OK,那么接下来我们来看看怎么办到这样的效果吧。 三、如果做?一步一步来 我们来先开始模块“药房报损申请/申批”,其最终效果如下: 接下来模块“药房报损确”,其最终效果如下: 接下来我们来定义工作流“药房报损申批流程”: 流程权限设定: 流程权限设定中包含流程发起权限及各状态的处理权限,其设置方式都一样,同AgileEAS.NET SOA平台中的模块权限设置保持一致,我们在些为账号xyf设定流程发起权限和“审请状态”的处理权限,给帐号zhx设定“审请状态”的处理权限,给账号Administrator设置“审请状态”的处理权限。 接下来需要绑定工作流与其驱动的业务模块之间的关联关系: 同时也需要在模块代码之中完成与工作流的绑定: 在功能模块中需要做两个地方的绑定,第一个在模块的头部需要标记明确WorkflowAddIn属性,用于声明这是一个受工作流驱动的功能模块,另一个是需要在功能模块中的声音一个类型为Guid的属性,并且标记WorkflowInstanceId属性,用于工作流向功能模块写入当前工作流实例,至此为止,工作流定义及流程自定义工作完成,接下来我们看看运行效果吧。 四、如果做?一步一步来 首先,我们使用帐号xyf登录,我们会看到如下功能: 我们打开“发起流程”: 或者直接打开“药房报损申请”模块发起工作流: 提交完成之后打开“我的申请”会看到刚才我们所发起的实例: 接下来,我们切换到账号“zhx”登录,并且打开我的待办: 完成一级审批“药房报损申请”: 打开已办事宜: 接下来,我们切换到账号“888888”登录,并且打开我的待办: 完成二级审核“药房报损申请”: 打开已办事宜: 最后我们切换到账号“xyf”,并打开 “药房报损确认”模块: 至此,药房药品报损业务处理演示完成,若审批流程发生变更,则只需要项目实施人员根据客户的业务流程修改工作流定义,而不需要修改程序代码,实现流程的自定义。 五、AgileEAS.NET 4.0 下载 有关于平台最新版本的最新发布版本的程序集、类库手册、相关资料,请大家从AgileEAS.NET平台的官网http://www.smarteas.net/进行下载,官网设有独立的下载页面,从这里下载:官网下载页面。 六、如何联系我们 如果您在使用AgileEAS.NET开发平台中有什么问题,请使用如下几种联系方式或者沟通方式。 1、官方网站: AgileEAS.NET平台:http://www.smarteas.net/ 敏捷软件工程实验室:http://www.agilelab.cn/

AgileEAS.NET SOA 中间件平台工作流系统介绍

by 魏琼东 2012.2.28 18:49
一、AgileEAS.NET SOA平台简介 AgileEAS.NET SOA平台是一套应用系统快速开发平台,用于帮助中小软件开发商快速构建自己的企业信息管理类开发团队,以达到节省开发成本、缩短开发时间,快速适应市场变化的目的,AgileEAS.NET应用开发平台包含基础类库、资源管理平台、运行容器、开发辅助工具等四大部分,资源管理平台为敏捷并行开发提供了设计、实现、测试等开发过程的并行。 AgileEAS.NET SOA平台基于软件过程改进以及构件化快速开发两方面达到这方面的目标,在软件过程改进实践方面,提出了独有的“敏捷并行开发方法”开发方法,其目的是在软件的管理之中提出符合国内中小软件企业实际情况并且可操作的软件工程实践、软件过程改进思想、及相配套的项目管理系统。 在快速开发方面,AgileEAS.NET SOA平台提供了企业应用开发所需的诸如ORM、IOC、分布式通信、插件与平台基础结构以及一系统的快速生成工具,涵盖开发过程中的设计、编码、集成、部署、运维等各个环节。 AgileEAS.NET SOA平台是一套基于微软dotNET技术体系的企业级快速开发平台/中间件/框架,我们一直一来努力为国内中心软件开发商、创业团队、独立开发者提供最好的企业应用快速开发工具帮助大家成长,在最新的AgileEAS.NET‘ 5 .0版本中对Winform/WPF/Silverlight/WebForm都提供运行支撑平台,我们努力提供一套Winform/WPF/Silverlight/WebForm不同展现与统一的后端支撑的多层分布式架构体系。 二、AgileEAS.NET SOA平台工作流系统 AgileEAS.NET SOA平台的早期版本不包含业务流程平台,2010年以来,很多客户提出了有必要让我们提供工作流系统的想法,也就有了今天的产品,AgileEAS.NET SOA平台的工作流系统自2010年5月份开始至今,经历过一次失败及一次构建思想重大的变更之后变成趋于成熟,并且目前已应用于客户的几个项目之中。 在早期的时候,我们的开发人员借鉴了微软WF3.5的工作流技术但并没有使用WF3.5的工作流引擎,并且自己写了一套工作流引擎,采用与顺序工作流相类似的业务风格,但这次尝试失败了,失败的原因第一是自己写工作流引擎需要考虑很多的技术和业务细节,并且所引发的未知问题不可控制,第二是开发人员在思维理解及对于练习技术与为客户做需要需要的产品之间的巨大的差异没有仔细考虑,这里也说到一个关于技术人员值得思考的问题,那就是“你倒底是需要做出客户需要的产品还是你为了某项技术而淬炼技术,做出一个客户并不需要的产品或者说一个无法产品化的产品”我想这将会是技术人员应该深思的问题,我们很多的开发人员都在为了淬炼自己的技术在那做客户并不需要的产品或者说做出的产品Bug满地,更像是一个学习做品,远远达不到产品化的目标。 因为诸多原因,我放弃了原来的版本,转换采用了微软 WF3.5做为其工作流引擎,并对其做了高层封装,用于满足绝大数工作流应用中的“审批业务流程”,也就是说AgileEAS.NET SOA平台所提供的工作流将主要是为了满足企业申请-审批业务流程的后期灵活而服务。 在经过长期的需求及技术调研之后,最终我们决定以微软的WF3.5为基础实现AgileEAS.NET SOA平台业务流程平台,引擎直接采用微软的WF3.5工作流引擎,工作流设计器参考微软给出的例子使用DesignSurface技术自行完成,自行实现了工作流的运行监控、持久化服务,并结合AgileEAS.NET SOA平台的权限模型实现了工作流发起及各个状态运行的权限控制,并结合AgileEAS.NET SOA平台构件开发的底子实现了工作流与业务构件的完美结合。 AgileEAS.NET SOA平台工作流系统主要涵盖工作流的设计与定义、流程实例的发起与运行、业务流程的监控与管理、工作流系统与业务系统的集成与协作等内容。 AgileEAS.NET SOA平台工作流: 工作流定义: 流程实例监控: 流程实例处理记录: 流程实例对应的业务表单: AgileEAS.NET SOA平台工作流的功能就简单介绍到这儿,接下来的文章我将会以一个具体的例子为大家演示一下AgileEAS.NET SOA平台工作流的使用。 三、关于AgileEAS.NET SOA 5.0 去年8月我就曾向大家预示过要发布AgileEAS.NET SOA平台5.0版本,但是截至到目前为止5.0版本还没有公开提供过,在此我向一直关注和支持AgileEAS.NET SOA平台发布的各位同行和朋友们说声抱歉,也向大家解释一下延迟发布的原因,这里面有两个原因,第一个是因为我对产品的成熟和发展过于乐观,第二个原因是我对于开发团队的引导和监控不力,因为去年现在不只是我一个人在完善这个平台,计划5.0发布中涉及的两个极其重要的部分工作流系统和界面设计器这两个工具在发布之间发现其根本没有达到我的计划目的,包含大量的Bug甚至在某个产品方向上有重大的错误,第三个原因呢主要是项目太多,我们一方面要完善AgileEAS.NET SOA平台,另一方面还需要为客户提供大量的技术咨询和项目指导服务,所以AgileEAS.NET SOA平台5.0版本的发布一直无限的延迟,一方面是继续完善产品,使其达到可用的程度,另一方面是AgileEAS.NET SOA平台5.0在我们向客户提供技术咨询与指导服务的同时,优先向客户提供,以便更早的被应用于生产环境,更早的发现产品中存在的问题,因为我们都在客户现场,产品中的bug或者说设计上的缺陷我们都可以及时的处理和修正,但是对于公开发布而言,当发现产品的缺陷的时候,其处理和修正的成本将会是极其巨大的,我们目前也没有太多的技术人员为大家提供此类服务,新产品的发布所以才会一直被延期,我们希望向客户提供的产品不是一个满地bug的产品,而是一个极其严谨可以的商业产品,虽然AgileEAS.NET SOA平台平台是免费向大家提供,但是我们还是希望提供商业化的品质。 目前想了解和学习AgileEAS.NET SOA平台的朋友请大家还是先下载4.0版本及其相关的例子,对4.0有充分的了解和认识,学习5.0将会更加的简单,5.0和4.0在技术上并没有太多的改变,只是增加了工作流平台、数据表单/界面设计工具、SAAS引擎和支持了Oracle、Mysql、SQLite三种新的数据库系统。 四、AgileEAS.NET 4.0 下载 有关于平台最新版本的最新发布版本的程序集、类库手册、相关资料,请大家从AgileEAS.NET平台的官网http://www.smarteas.net/进行下载,官网设有独立的下载页面,从这里下载:官网下载页面。 五、如何联系我们 如果您在使用AgileEAS.NET开发平台中有什么问题,请使用如下几种联系方式或者沟通方式。 1、官方网站: AgileEAS.NET平台:http://www.smarteas.net/ 敏捷软件工程实验室:http://www.agilelab.cn/

AgileEAS.NET 之 Linq 2 EAS.NET,Orm支持Linq,写程序更加的方便

by 魏琼东 2011.5.11 15:09
     前面的文章AgileEAS.NET 4.0重构裁剪,新的ORM、支持Linq,正式支持WPF,开放更多的接口简单的介绍了一下AgileEAS.NET平台在2011年初的一些重大改进措施,其他涉及到有关于Orm体系的改进以及对linq的支持,AgileEAS.NET 快速平台之ORM体系的改进与ORM的新成员一文中对Orm的改进做了介绍,本文将详细的给大家介绍这AgileEAS.NET平台中Orm对Linq技术的支持。   Linq介绍:      LINQ是Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性。已成为编程语言的一个组成部分,在编写程序时可以得到很好的编译时语法检查,丰富的元数据,智能感知、静态类型等强类型语言的好处。并且它同时还使得查询可以方便地对内存中的信息进行查询而不仅仅只是外部数据源。      LINQ定义了一组标准查询操作符用于在所有基于.NET平台的编程语言中更加直接地声明跨越、过滤和投射操作的统一方式,标准查询操作符允许查询作用于所有基于IEnumerable<T>接口的源,并且它还允许适合于目标域或技术的第三方特定域操作符来扩大标准查询操作符集,更重要的是,第三方操作符可以用它们自己的提供附加服务的实现来自由地替换标准查询操作符,根据LINQ模式的习俗,这些查询喜欢采用与标准查询操作符相同的语言集成和工具支持。      我们来总体看看LINQ结构:      需要说明一点的是,Linq是从.NET3.5开始支持的,.NET3.5  Framework 中提供了 LINQ to Objects、LINQ to DataSets、LINQ to SQL、LINQ to Entities、LINQ to XML等默认支持。      以上内容是摘抄自互联网的相关内容,简单的说明了一下Linq及Linq的应用,如果说单纯的那么Linq是一种语言中的特性的话LINQ to Objects、Linq to SQL就是这种语言特性在对象查询、SQL查询中的具体应用。 Linq to EAS.NET:      Linq to EAS.NET 同LINQ to Objects、Linq to SQL 一样,是应用了Linq这种语言特殊在AgileEAS.NET平台的Orm体系的应用,类似于Linq to SQL、Linq to Entities,应用Linq语言特殊实现AgileEAS.NET平台Orm对象的查询,让使用AgileEAS.NET平台进行开发变得更加简单和方便。      下面我们来进行一个简单的Linq to EAS.NET 应用吧:      第一步:打开对象设计器,建设一个实体对象(Product),并生成代码:      第二步:打开AgileEAS.NET平台对象设计器生成的代码,增加一个Asp.NET Web应用程序LinqDemo.WebUI,并且在Default.aspx页面中拖放一个GridView并且设定绑定信息如下:      第三步:使用linq编写数据查询代码并绑定到GridView:      第四步:修改Web.Config文件,增加以下配置信息: <EAS.Objects> <!--访问器。--> <object name="DataConnection" assembly="EAS.Data" type="EAS.Data.Access.SqlClientConnection" LifestyleType="Singleton"> <property name="ConnectionString" type="string" value="Data Source=.;Initial Catalog=demo;User ID=sa;Password=sa1234;"/> </object> <object name="DataAccessor" assembly="EAS.Data" type="EAS.Data.Access.SqlClientAccessor" LifestyleType="Singleton"> <property name="Connection" type="object" value="DataConnection"/> </object> <object name="OrmAccessor" assembly="EAS.Data" type="EAS.Data.ORM.OrmAccessor" LifestyleType="Singleton"> <property name="DataAccessor" type="object" value="DataAccessor"/> <property name="PageProvider" type="object" value="PageProvider"/> </object> <object name="PageProvider" assembly="EAS.Data" type="EAS.Data.ORM.OraclePageProvider" LifestyleType="Thread"/> <object name="ServiceBridger" assembly="EAS.MicroKernel" type=" EAS.Services.LocalServiceBridger" LifestyleType="Singleton"/> <object name="Logger" assembly="EAS.MicroKernel" type="EAS.Services.TextLogger" LifestyleType="Singleton"/> </EAS.Objects>        最后:编译运行,看看结果:      OK,通过以上简单的过程,基于Linq to EAS.NET实现了一个简单的like查询,相信大家已经看到了这个编程的便宜性,接下来我将会在把有关于Linq to EAS.NET所实现的表达式做一些简单的说明。 支持那些表达式:      Linq所支持的表达式非常的多,AgileEAS.NET平台只是实现了使用最频繁的那些表达式,对表没有实现的表达式在开发中或者要采用其他进行处理,下面我详细的向大家介绍AgileEAS.NET所实现的那些表达式: 条件表达式       Linq to EAS.NET中实现了“=”、“>”、“<”、“>=”、“<=”、“!=”、“like ”匹配、In 查询、Between 、以及And、Or组合。 排序表达式       Linq to EAS.NET中实现了Order by ,Order by  Desc排序。 统计及分页       Linq to EAS.NET也实现了First、Last、FirstOrDefault、LastOrDefault表达式。 Select New {}       Linq to EAS.NET也实现了select new {}表达式,这将能大大提高编程的方便性和更高的查询性能,如下写法: 其他表达式       Linq to EAS.NET实现了 Count统计以及基于统计的分页支持Top、Take及Skip表达式。 下一步的计划:       在接下来的Linq to EAS.NET版本中我们将陆续支持更表的表达式,在近期将会支持Sum、Average、Max、Min表达式,在下一步Orm支持关系之后将进一步支持join 、left join、right join表达式。       对于Group by 、Having表达式暂时还没有考虑到支持。 如何实现Linq的:      Linq to EAS.NET的实现思想非常的简单,即解析Linq表达式并转换为AgileEAS.NET的查询表达式树并由AgileEAS.NET平台的Orm执行并返回结果。      在AgileEAS.NET平台的Orm技术中,我们实现了一个LINQ Provider,即EAS.Data.Linq.DataEntityQuery<T>,在执行任务linq任务之前,并且显式的定义EAS.Data.Linq.DataEntityQuery<T>实例,由他在解析并势力Linq语法,在此要感谢李会军的两篇文章:打造自己的LINQ Provider(上):Expression Tree揭秘和打造自己的LINQ Provider(中):IQueryable和IQueryProvider,遗憾的是,他并没有写出下篇,感兴趣的朋友去看看吧。      AgileEAS.NET平台ActiveXForm运行容器的客户端工作插件。      本文中的小例子及其相关的对象定义文件、建表及数据创建脚本、源代码文件,请大家从这里下载。 下载说明      有关于平台最新版本的最新发布版本的程序集、类库手册、相关资料,请大家从AgileEAS.NET平台的官网http://www.smarteas.net/进行下载,官网设有独立的下载页面,从这里下载:官网下载。 CallHot 写过一个系列的基于AgileEAS.NET平台的开发案例,请大家通过AgileEAS.NET平台开发Step By Step系列-药店系统-索引及AgileEAS.NET敏捷开发平台及案例下载(持续更新)-索引、AgileEAS.NET平台开发实例-药店系统-视频教程系列-索引一系列文章进行下载。 如何联系      如果您在使用AgileEAS.NET开发平台中有什么问题,请使用如下几种联系方式或者沟通方式。 1、官方网站:      AgileEAS.NET平台:http://www.smarteas.net/      敏捷软件工程实验室:http://www.agilelab.cn/ 2、AgileEAS.NET平台交流群:      AgileEAS.NET平台交流群:120661978(超级群)[新建]      AgileEAS.NET平台交流群:125643764(高级群)[新建]      AgileEAS.NET平台交流群:147168308(高级群)[新建]   3、系统架构交流群:      系统架构交流群:9105332(高级群)(已满)      系统架构交流群1:124825459(高级群)(已满)      系统架构交流群2:49124441(高级群)(已满)      系统架构交流群3:47025564(高级群)(已满) 链接 AgileEAS.NET平台开发指南-文章索引 AgileEAS.NET应用开发平台介绍-文章索引 AgileEAS.NET平台应用开发教程-案例计划

AgileEAS.NET之插件接口IModule

by hot 2011.3.26 16:34
AgileEASNET之插件接口IModule [更多...]

AgileEAS.NET之系统架构

by hot 2011.3.26 16:34
AgileEASNET之系统架构 [更多...]

DotNET企业架构应用实践-架构师成长之路-如何成为优秀架构师

by hot 2011.3.26 16:12
DotNET企业架构应用实践-架构师成长之路-如何成为优秀架构师 [更多...]

设计模式-系列索引

by AgileEAS.NET 2011.3.26 15:41
设计模式-系列索引 [更多...]

系统架构师-基础到企业应用架构-表现层

by AgileEAS.NET 2011.3.26 15:35
系统架构师-基础到企业应用架构-表现层 [更多...]

Tags: , , , , ,

企业应用架构

系统架构师-基础到企业应用架构-服务层

by AgileEAS.NET 2011.3.26 15:34
系统架构师-基础到企业应用架构-服务层 [更多...]

系统架构师-基础到企业应用架构-业务逻辑层

by AgileEAS.NET 2011.3.26 15:33
系统架构师-基础到企业应用架构-业务逻辑层 [更多...]

最新评论

声明

本博所有网友评论不代表本博立场,版权归其作者所有。

© Copyright 2011