什么是Activity,Activity的其他概念, Activity分类

2.4            什么是Activity

我们可以从两个方面理解Activity

*           Activities are the building blocks of workflows

Activityworkflow一个已经编译的模块

*          The unit of execution, re-use and composition

是一个可执行的、可重用和可以组合的单元

*          Basic activities are steps within a workflow

基础的ActivityWorkflow的一个步骤

*          Composite activities contains other activities EG: Sequence

复杂的Activity可以包含其他的Activity,例如:Sequence(一个WF预定义的Activity

*          Partners and customers author custom activities EG: “ApproveOrder”

Activity可以是合作伙伴或者客户提供的一个自定义的Activity,这个Activity可能完成一些特定的商业逻辑,例如:“ApproveOrder

*           Activities are classes:

*          Properties and events are defined by the activity author and programmable from workflows

可以在Activity中定义属性和事件由workflow使用

*          Has methods that are coded by the activity author but invoked by the workflow runtime (EG: Execute) or designer

Activity中的方法是由Activity的作者实现(如:Execute),由workflow或则设计器进行调用

*          Can be built into workflow assemblies or deployed as re-usable libraries

可以编译在workflow中或则作为可重用库依赖于workflow

下面代码演示了一个Activity的例子:

public partial class SendEmailActivity :

System.Workflow.ComponentModel.Activity

    {

        public SendEmailActivity()

        {

           ............

        }

        // override Execute with your custom logic

        protected override ActivityExecutionStatus

 Execute(ActivityExecutionContext context)

        {

            // you custom logic

            return ActivityExecutionStatus.Closed;

        }

//property

        public string To

        {

            get{........;}

            set{........;}

        }

//event

public event EventHandler<CustomActivityEventArgs> Sending

        {

            add{........}

remove{........}

        }

    }

这里面一直在重点强调Activity的是重用,可以说一个Activity的最重要之处就是重用。重用不单单是代码的重用,而是业务逻辑的重用,这也是工作流应用的灵活之处。在开发工作流应用的时候,怎样划分业务逻辑?业务逻辑的颗粒度有多细?WF并没有规定,况且这个问题是仁者见仁,智者见智,并没有一个统一的定论。

个人的理解在定义一个Activity时要做到第一可重用、第二松耦合。在本文中只是对WF的组成和工作原理进行简单的介绍,不会深入讨论业务逻辑的划分和定义,我想即使不使用WF,业务系统也会遇到同样的问题。

2.5            Activity的其他概念

在自定义Activity时还有几个比较重要的概念,分别是DesignerActivityValidatorCodeGeneratorSerializerToolboxItem和定义行为的SupportsTransactionSupportsExceptionHandlers。实际上这些该是ActivityAttribute类,分别制定了Activity在设计器中的UI界面、对Activity在设计期间的完整性校验、Activity的序列化等操作。具体内容我会在后面章节具体介绍,这里只介绍如何使用。

[Designer(typeof(CustomActivityDesinger),typeof(IDesigner))]

[ActivityValidator(typeof(SendEmailValidator))]

public partial class SendEmailActivity :

System.Workflow.ComponentModel.Activity

    {

        ......

}

public class CustomActivityDesinger : ActivityDesigner

{

    ......

}

public class SendEmailValidator :

 System.Workflow.ComponentModel.Compiler.ActivityValidator

{

    ......

}

 

2.6            Activity分类

现在提供的Activity大约有28种,分成8类:

1:   Control Flow Activity:控制流程类

2:   Workflow Lifetime Activity:工作流相关

3:   Event Waiting Activity:事件类

4:   Transaction and Exception Activity:事务和异常处理类

5:   Data-Centic Activity:数据(交换)处理类

6:   WebService ActivityWeSerivice的处理

7:   The Code Activity:代码处理类

8:   State Workflow Activity:状态机工作流处理类

9:   其它,Custom Activity:用户自定义类

分类中具体的Activity如下:

1:   Control Flow Activity:控制流程类

*          Sequence Activity:顺序流程

*          Parallel Activity:并行流程

*          IfElse Activity:条件判断流程

*          While Activity:循环流程

*          ConditionedActivityGroup:条件组

*          Replicator Activity:自我复制。可以在运行中自我复制实例。

*          Delay Activity:延时执行。

2:   Workflow Lifetime Activity:工作流相关

*          InvokeWorkflow Activity:调用执行另外的工作流

*          Suspend Activity:暂停当前执行的工作流

*          Terminate Activity:中止工作流

3:   Event Waiting Activity:事件类

*          EventDriven Activity:等待事件驱动。指定要等待处理的事件名,参数等

*          Listen Activity:侦听消息。这个可以同时侦听很多消息。一个Listin里面有多个EventDriven

4:   Transaction and Exception Activity:事务和异常处理类

*          Transaction Context Activity:处理事务中的上下文,支持短期、长期的事务。

*          Throw Activity:抛出异常

*          ExceptionHandler:异常处理。

*          Compensate Activity:补偿处理,只能放在Exception中,处理一些回滚处理等。

5:   Data-Centic Activity:数据(交换)处理类:用于WF处理空间和Host空间之间的数据交换。

*          UpdateData ActivityWF把数据更新到Host

*          SelectData ActivityWF发向Host的请求

*          WaitForData Activity

*          WaitForQuery ActivityHost发向WFWF返回DataSource

6:   WebService ActivityWeSerivice的处理

*          InvokeWebService Activity:调用WebService

*          WebServiceReceive Activity

*          WebServiceResponse Activity

7:   The Code Activity:代码处理类

*          Code Activity:可写一些代码。但是我不觉得这样的处理好,因为这样的逻辑有点写死进程序里了。

8:   State Workflow Activity:状态机工作流处理类

*          State:状态。状态机的一个状态。一个工作流必须有个初始状态,有个结束状态。

*          StateInitialization:初始状态。我好像没用过这个

*          SetState:设置下一个状态。

9:   Custom Activity:用户自定义状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值