EntLib.com 开源博客平台

本博客平台专注于开源.Net 系统,如开源ASP.NET论坛、开源ASP.NET博客、开源ASP.NET电子商务平台(前台购物系统和后台业务处理系统),以及分享、交流Microsoft .Net平台的相关技术及企业架构设计,如.Net Framework、ASP.NET、C#、ADO.NET Entity Framework、MVC Framework、AJAX、LINQ、SQL Server、Service Broker、WCF/WF/WPF、BizTalk、ESB (Enterprise Service Bus)、SOA (Service-Oriented Architecture) 、Enterprise Library 等等。

EntLib.com 博客平台完全开放源码,欢迎访问论坛:
http://forum.EntLib.com
进行交流、分享。

Powered By:

统计信息

  • 博客: 101
  • 随笔: 212
  • 文章: 3
  • 评论: 503
  • 引用: 0

博客列表



最新评论


推荐技术专题


Enterprise Library 专题

ASP.NET MVC 专题
  Enterprise Library for .Net Framework 3.5 – EntLib v4.1 是patterns & practices 小组为.NET Framework 3.5 开发一套企业库,目前最新版本为v4.1,共包括9个Application Block,包括数据访问(Data Access Application Block)、异常管理(Exception Handling Application Block)、数据验证(Validation Application Block)等等,对企业应用开发非常有帮助,也非常实用。

查看详细信息...
  根据《Professional ASP.NET MVC 1.0》中微软牛人Scott Guthrie 提供免费下载的第一章,一步一步演示如何通过ASP.NET MVC 1.0 正式版创建NerdDinner 范例程序。对了解如何使用最新的ASP.NET MVC 1.0框架创建Web Application 非常有帮助。

查看详细信息...


首页最新随笔

转到页面:<<345678910

WF 状态机工作流构建订单处理流程-范例程序分析 Part 1

WF 状态机工作流构建订单处理流程-范例程序分析 Part 1
 
状态机工作流(State Machine Workflow)是以状态的变化为驱动而进行业务流转的,且一定需要人为的干预,而不像顺序类型工作流(Sequential Workflow)那样按照事先设计好的业务流程一步一步依次执行下去。本范例程序由http://forum.entlib.com 开源ASP.NET/C# 论坛小组提供。
 
State活动有3种类型的状态:起始状态(Initial State)、业务逻辑过程状态、终止状态(Completed State),在一个状态机工作流中起始状态和终止状态只能有一个。状态机工作流是从起始状态开始执行,在运行过程中通过业务逻辑状态的变化来进行工作流的流转,最终由终止状态标志工作流的结束。因此在状态机工作流设计界面上只能添加 State 状态活动,另外,在该状态中还可以添加一个或多个EventDriven 活动。下面通过一个订单处理流程的范例,详细介绍状态机工作流的使用。
 
下图简要描述了订单处理流程,你会发现许多地方需要用户参与或输入,来改变工作流。例如,财务部门依赖于支付情况来改变工作流,采购部门依赖于库存情况来改变工作流等等。
 
 
 
按照下面具体的操作步骤,一步一步实现上述状态机工作流演示程序。
 
1. 创建接口程序
由于状态机工作流中大量使用HandleExternalEvent 活动来接收应用程序的操作事件,从而改进该工作流上运行的业务实体的状态,因此需要定义一个接口程序作为工作流和应用程序之间沟通的桥梁。本范例程序中将通过接口中的7个事件来模拟状态机工作流的触发,接口IOrder.cs 如下所示。需要注意的是:我们引用System.Workflow.Activities,并且接口添加了[ExternalDataExchange]属性。
 
 
2. 创建Class Library项目,并添加State Machine Workflow(状态机工作流)文件。如下图所示。
 
 
在添加State Machine Workflow文件后,Workflow设计器自动打开。工作流的每一个State都有事件,因此在State Activity 添加EventDriven组件。
 
 
在事件Event触发后,State状态进入下一个状态。因此,双击EventDriven组件,添加HandleExternalEvent组件和SetState组件,其中HandleExternalEvent定义监听的事件,SetState定义将进入的下一个状态。
 


 
按照上面的步骤,重复创建OrderPlaced、OrderApproved、OrderPending、OrderDelivered、OrderCancelled状态,并添加相应的EventDriven组件,最终实现的状态机工作流如下所示:
  
 

简要分析WF 状态机工作流的部分代码

简要分析WF 状态机工作流的部分代码
 
这里简要分析WF 状态机工作流的部分代码。
首先,看看下面的代码:
    public class clsOrder : IOrder
    {
        #region IOrder Members
 
        public event EventHandler<ExternalDataEventArgs> NotPaid;
        public event EventHandler<ExternalDataEventArgs> InStock;
        public event EventHandler<ExternalDataEventArgs> PaymentMade;
        public event EventHandler<ExternalDataEventArgs> Dispatch;
        public event EventHandler<ExternalDataEventArgs> AddressNotProper;
 
        public event EventHandler<ExternalDataEventArgs> AddressCorrected;
 
        public event EventHandler<ExternalDataEventArgs> ProductStocked;
 
        #endregion
        public void CallNotPaid(ExternalDataEventArgs args)
        {
            // 触发工作流中相应的活动
            NotPaid(null, args);
            Console.WriteLine("This order is not paid");
        }
 
其中 event EventHandler<ExternalDataEventArgs> 代码相当于C# 1.0 中的语法:
delegate void ExternalDataEventHandler(object sender, ExternalDataEventArgs e);
event ExternalDataEventHandler OnInitStart;
事件只有两个参数,一个是sender谁触发的,一个是相关的参数。
 
event EventHandler <ExternalDataEventArgs>定义的是一个事件。 其中EventHandler <ExternalDataEventArgs>是一个delegate的简化定义。
 
public event EventHandler<ExternalDataEventArgs> NotPaid;
这里定义了一个EventHandler 类型的事件 NotPaid。
 
 
其中,NotPaid(null, args);方法触发工作流中相应的活动,这里是触发NotPaid事件,进一步转换State的状态。
 

Microsoft SQL Server 2008 All-in-One Desk Reference For Dummies 读书笔记之八

Microsoft SQL Server 2008 All-in-One Desk Reference For Dummies 读书笔记之八
 
SQL Server 2008是一个重大的产品版本,它推出了许多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的 SQL Server 版本。《Microsoft SQL Server 2008 All-in-One Desk Reference For Dummies》包括了9本书,分别介绍了SQL Server 2008的一些特性和技术,内容图文并茂、非常直观、浅显易懂。本系列读书笔记分9篇,分别介绍每本书的一些值得关注的内容。
 
 
Book VIII – Database Administration 数据库管理
本节介绍了数据库的一些基本管理操作,如移动数据库、备份和恢复、数据库自动维护计划等等。另外,还介绍了SQL Server 帐号管理及访问控制,数据同步(Replication),Partitioning等等。
 
Book IX – Appendixes 附录
本节介绍了SQL Server 2008的一些网上资源,如Microsoft SQL Server官方站点、开发中心、新闻组等等。另外也介绍了SQL Server 2008 的一些问题及解决办法。
 
欢迎访问http://blog.entlib.com/ 开源ASP.NET博客平台,了解更多的读书笔记。

Microsoft SQL Server 2008 All-in-One Desk Reference For Dummies 读书笔记之七

本节简单介绍了一些性能监控工具,如Windows 任务管理器、性能监视器、数据库引擎优化顾问(Database Engine Tuning Advisor)、以及SQL Server Profiler等等。这些都是DBA 优化和管理数据库的基本工具。 另外,介绍了如何使用索引(Index)来强化查询性能,分析了查询执行计划(Query Execution Plan)。其中,本节列举一些数据表的设计规范,如: 1. 总是定义主键值(Always define a primary key); 2. 避免前置通配符(Avoid leading wildcards); 3. 避免高度重复的索引值(Avoid highly duplicate indexes); 4. 不要忘记对临时表建立索引(Don’t forget to index temporary tables); 5. 在join列上建立索引(Place indexes on join columns); ...... 阅读全文

Microsoft SQL Server 2008 All-in-One Desk Reference For Dummies 读书笔记之六

Book VI – Analysis Services 分析服务
Microsoft SQL Server 2005/2008 Analysis Services (SSAS) 为商业智能应用程序提供联机分析处理 (OLAP) 和数据挖掘功能。Analysis Services 允许您设计、创建和管理包含从其他数据源(如关系数据库)聚合的数据的多维结构,以实现对 OLAP 的支持。对于数据挖掘应用程序,Analysis Services 允许您设计、创建和可视化处理那些通过使用各种行业标准数据挖掘算法,并根据其他数据源构造出来的数据挖掘模型。
本节介绍了Analysis Services功能,包括OLAP和数据挖掘(Data Mining)功能。下面简要介绍一下创建SQL Server Analysis Project 项目的基本步骤。
...... 阅读全文

Microsoft SQL Server 2008 All-in-One Desk Reference For Dummies 读书笔记之五

Microsoft SQL Server 2008 All-in-One Desk Reference For Dummies 读书笔记之五
 
SQL Server 2008是一个重大的产品版本,它推出了许多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的 SQL Server 版本。《Microsoft SQL Server 2008 All-in-One Desk Reference For Dummies》包括了9本书,分别介绍了SQL Server 2008的一些特性和技术,内容图文并茂、非常直观、浅显易懂。本系列读书笔记分9篇,分别介绍每本书的一些值得关注的内容。
 
 
Book V – Reporting Services 报表服务
本节讲解了SQL Server 的Reporting Services报表服务,Reporting Service微软公司推出的新一代的报表解决方案。它是一个完整的基于服务器的平台,可以建立、管理、发布传统的基于纸张的报表或者交互的、基于Web的报表。而且最大的特色是,它采用基于XML的RDL报表描述语言来定制报表,可以用于给第三方定制开发符合接口标准的报表工具,使得软件开发人员和企业可以将报表集成到已有的系统或第三方的应用中。不过,本节主要关注于Reporting Services的基本特性,包括Reporting Services 的架构,及创建,管理与发布等等,不涉及Reporting Services的高级功能。
Visual Studio 商业智能项目包含3个报表项目模板,关于各个报表项目模板的介绍,请点击这里
 
第二章详细介绍了通过 Report Builder 和 Report Model创建报表,具体细节参考如下文章:
 
第三章详细介绍了通过 Report Designer 创建报表,具体细节参考如下文章:
 
欢迎访问http://blog.entlib.com/ 开源ASP.NET博客平台,了解更多的读书笔记。
 

Visual Studio 商业智能项目包含3个报表项目模板

Visual Studio 商业智能项目包含3个报表项目模板
 
当你使用BIDS(商业智能项目)的报表设计器(Report Designer)时,你可以创建和操作报表,并发表到报表服务器(Report Server),允许用户访问报表。Visual Studio 商业智能项目包含了3种报表项目模板,如下图所示:
 
 
报表服务器项目(Report server project): Report server projects are used to create reports. Once created, your reports can be deployed to your report server. You can add shared data sources, and multiple reports to a report server project.
报表服务器项目向导(Report Server Project Wizard): This is similar to the report server project, but it immediately launches a wizard to simplify the creation of the first report.
报表模型项目(Report model project): Report model projects are used to create report models. Once deployed to a report server, a report model is used to create an actual report using the Report Builder.
 
关于报表模型项目(Report Model)的使用,可以参考如下文章:
 
关于报表服务器项目(Report Server Project)的使用,可以参考如下文章:

SSRS 使用Report Designer 创建Report报表

SSRS 使用Report Designer 创建Report报表
 
开发人员可以通过SQL Server的Business Intelligence Development Studio(BIDS) 创建数据报表。如下图所示,该图描述了在BIDS中使用Report Designer创建Report的流程。Report Designer 指定了报表的所有细节,如Data Source数据源、查询、过滤器Filter、以及如何显示报表数据等等。在报表发布到SSRS 报表服务器上后,用户就可以查询这些报表来检索数据了。
 
 
 
使用BIDS Report Designer设计报表,范例程序采用AdventureWorks2008 数据库。其主要操作步骤如下:
1. 启动BIDS – Microsoft SQL Server 2008 / SQL Server Business Intelligence Development Studio (BIDS)。
2. 选择File / New / Project,选择Report Server Project 报表服务器项目。
3. 右键点击 Reports 报表,在弹出菜单中选择Add New Report 添加新报表。
 

 
4. 然后启动Report向导,一步一步创建Report。在Report Designer中,可以拖拉列的宽度,修改Report的标题,修改列的标题,插入图片等等。
 

 
5. 在修改完成Report后,进一步设置项目的TargetServerURL属性,指定该报表发布的目的报表服务器的地址。
6. 在成功发布报表后,既可以通过访问Report Server 来访问报表,也可以通过Report Manager 来查看报表。如下图所示:
 

 
更具体详细的操作步骤,可以参考如下文章:
1. Microsoft SQL Server 2008 All-in-One Desk Reference For Dummies, Book V – Reporting Services, 第三章 – Creating Reports with Report Designer.
 
2. SSRS 使用Report Builder 和Report Model创建Report
 

SSRS 使用Report Builder 和Report Model创建Report

Report Builder(报表设计器)是一个简单的GUI工具,用户可以使用Report Builder创建自己需要的报表。在创建好Report Model(报表模型)并发布到Reporting Services站点后,用户就可以使用Report Model和Report Builder创建报表了。尽管通过Report Builder 创建Report比较简单,但预测用户需要什么报表以及创建Report Model可能需要一些时间。
如上图所示,显示了使用通过Report Model(报表模型)创建Report的流程。首先,开发人员创建一个Report Model,就像一个蓝图。其中,指定了数据源,表示将显示的数据。然而,就像你不能生活在一个房屋的图纸中,你不能通过Report Model来查看报表。 ...... 阅读全文

Microsoft SQL Server 2008 All-in-One Desk Reference For Dummies 读书笔记之四

Microsoft SQL Server 2008 All-in-One Desk Reference For Dummies 读书笔记之四
 
SQL Server 2008是一个重大的产品版本,它推出了许多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的 SQL Server 版本。《Microsoft SQL Server 2008 All-in-One Desk Reference For Dummies》包括了9本书,分别介绍了SQL Server 2008的一些特性和技术,内容图文并茂、非常直观、浅显易懂。本系列读书笔记分9篇,分别介绍每本书的一些值得关注的内容。
 
 
Book IV – Database Programming 数据库编程
本节前面部分介绍了SQL Server的一些基本对象,如存储过程Stored Procedure、用户自定义函数Function、触发器Trigger等等。
在第六章介绍了Linked Server,如何访问远程数据库。具体细节可以参考如下文章:
 
第七章介绍了SQL Server 2008的一些高级开发主题,如SQL Server Service Broker。Service Broker 是SQL Server 2005 中引入的基于数据库的消息机制,在SQL Server 2008进行了细微改进。Service Broker 提供了可靠的、异步的消息服务,在企业级应用中,有广阔的应用场景。具体细节可以参考如下文章:
 
欢迎访问http://blog.entlib.com/ 开源ASP.NET博客平台,了解更多的读书笔记。