控制流程类型活动
Code活动:执行关联的代码,关键属性“ExecuteCode”。
Sequence:允许按顺序执行一组Activity。
IfElse:根据指定的条件执行包含的活动。
While:按指定的迭代次数执行包含的Activity。
Policy:根据一组关联的规则执行操作。
ConditionedActivityGroup:根据关联的事件/条件执行包含的Activity。只能在满足指定条件后,才会执行包含的Activity。
Replicator:通过创建指定数量的复制实例来执行包含的Activity。
SynchronizationScope:在同步域中顺序执行所包含的Activity。
容器类型的符合活动,它可以为每个分支设置一个“排他”的标记“SynchronizationHandles”。
事件类型活动
HandleExternalEvent:允许在工作流中接收事件。
依赖外部来触发事件的,
CallExternalMethod:从工作流中调用外部方法。
Listen:允许根据指定的延迟时间或事件执行所包含的Activity。
此活动每条分支之间都是平行关系,只要有一个分支监听到事件,其他分支就都不会被执行。
分支与分支之间是具有“排他”性的。此活动每条分支上的第一个子活动一定为事件类型的活动。
Delay:将执行延后指定的一段时间。
事件类型活动,由自身来触发事件。
该活动可以触发工作流的“WorkflowIdled”事件,使工作流进入“idle”状态。
EventHandlingScope:对子Activity的执行启用事件处理。
容器内的活动,每个分支都是由EventDriven容器类型的活动构成。
此活动是在其主活动运行结束前,它的所有事件的分支都可以被执行,不会出现“排他”的现象,该活动所监听的事件
都存放在“Event Handlers”视图里。
Parallel:允许并行执行包含的Activity。
容器类型的活动,该活动的每条分支都是由Sequence活动构成的,在此活动运行时,只有每条分支全部执行完毕后该活动才结束,工作流
也才能执行Parallel活动的其他后续活动,否则工作流就将一直等待知道Parallel活动结束。此活动的每条分支之间的关系都是平行的,这里
的“平行”是指逻辑业务上的平行而在运行时都属于同一个线程。此活动被广泛运用于“会签”流程,例如某个文件要3个部门全部签字后才能
生效,那么这3各部门在该工作流程中就是平行的关系。
事务和异常处理类型活动
FaultHandler:允许根据指定的异常执行包含的Activity。
在wf中同一个容器内某个活动在运行时发生了异常,那么该容器内位于它后面的所有活动将不能被执行。
Throw:允许在工作流中引发异常。
如果容器没有对它内部子活动的异常进行捕捉,那么该容器后面的其他活动将不再被执行,反之容器后续的活动将继续执行。
在程序运行时由于未知错误引发的异常被称为隐形异常,用户可以通过Throw活动在工作流中声明一个显性的异常并将它抛出,
当异常发生时将会触发工作流运行时容器Runtime的“WorkflowTerminated”事件。
Compensate:为支持长时间运行事务的作用域启用补偿。
此活动是一个顺序类型的容器。补偿也需要指定一个区域,在该区域内如果发生了某些异常情况,那么就可以通过Compensatable活动
来指定该类型的异常应该执行哪个区域内的补偿措施,这个区域可以使用CoompensatableSequence活动来限定。
在现实工作中工作流还需要对某些特殊情况下的业务逻辑进行处理,例如某厂商生产的物品发现了缺陷,那么就需要在工作流程
中设置一个召回的流程;某些公文写错了,正规的做法就是通过一个流程将其作废,而不是直接销毁;如果给客户发了一封错误
的邮件,那么能做的就是再发一封邮件告诉他正确的信息,而不能把客户收到的那份邮件删除。在wf中可以使用CompensatableSequence
活动和Compensatable活动来实现。
注意:此活动是对已经存在的结果进行补偿。
CompensatableSequence:按具有补偿的序列执行一组活动。
CompensatableTransactionScope:在事务中按顺序执行包含的活动并支持补偿。
TransactionScope:在事务中顺序执行所包含的Activity。
CompensatableTransactionScope:在事务中按顺序执行包含的活动并支持补偿。
WebService和与WF相关的活动
InvokeWorkflow:允许使用异步Excute执行指定工作流。
Termainate:终止工作流的执行。
是结束工作流的活动,在执行时将触发工作流中的“WorkflowTerminated”事件
Suspend:挂起工作流的执行。
是暂停工作流的活动,在执行时将触发工作流中的“WorkflowSuspended”事件
WebServiceInput:允许在工作流内从WebService接收数据。
WebServiceOutput:允许在工作流内向WebService发送数据。
InvokeWebService:允许从工作流内部调用WebService。