您的位置:首页 > 其它

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

2008-05-11 17:28 239 查看
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
基础的Activity是Workflow的一个步骤


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时还有几个比较重要的概念,分别是Designer、ActivityValidator、CodeGenerator、Serializer、ToolboxItem和定义行为的SupportsTransaction、SupportsExceptionHandlers。实际上这些该是Activity的Attribute类,分别制定了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 Activity:WeSerivice的处理
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 Activity:WF把数据更新到Host


SelectData Activity:WF发向Host的请求


WaitForData Activity:


WaitForQuery Activity:Host发向WF,WF返回DataSource
6: WebService Activity:WeSerivice的处理


InvokeWebService Activity:调用WebService


WebServiceReceive Activity


WebServiceResponse Activity
7: The Code Activity:代码处理类


Code Activity:可写一些代码。但是我不觉得这样的处理好,因为这样的逻辑有点写死进程序里了。
8: State Workflow Activity:状态机工作流处理类


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


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


SetState:设置下一个状态。
9: Custom Activity:用户自定义状态。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: