Workflow Runtime ps:一个AppDomain只能有一个workflowRuntime实例。
表2-1 WorkflowRuntime的属性
属性功能IsStarted用来指明workflow运行时是否已经启动并准备接受workflow实例。当宿主调用“StartRuntime”前IsStarted为False。期间它一直维持True直到宿主调用“StopRuntime”为止。需注意的是当它正在运行中你不能增加核心服务。Name 获取或设置和WorkflowRuntime关联的名字。Workflow运行时正在运行中你不能设置这个属性(也就是说当IsStarted为True)。企图这样做的结果就是抛出一个“InvalidOperationException”异常。表2-2 WorkflowRuntime的方法
方法功能AddService为workflow运行时添加指定的服务。能添加的服务类型和时间受到种种限制。关于服务的详细信息将在第五章介绍。CreateWorkflow创建一个workflow实例,它包含一些指定(但可选)的参数。假如workflow运行时没有启动,该方法就调用StartRuntime方法。GetWorkflow通过 指明workflow实例的标识符(由一个Guid组成)来检索workflow实例。假如这个workflow实例是空闲和持久化保存的,它将被重新加载并执行。StartRuntime启动workflow运行时和相关服务,并引发“Started”事件。StopRuntime停止workflow运行时和相关服务,并引发“Stoped”事件。表2-3 workflow运行时的相关事件描述
事件功能Started当workflow运行时启动后激发。Stopped当workflow运行时停止后激发。WorkflowCompleted当一个workflow实例完成后激发。WorkflowIdled当一个workflow实例进入空闲状态时激发。当workflow实例进入了空闲状态后,你就有机会把他们从内存中卸载掉、存储到数据库并可在稍后的时间把它们加载进内存。WorkflowTerminated当一个workflow实例被终止后激发。在宿主中调用一个workflow实例的Terminate方法、或通过一个Terminate活动、或当workflow运行时产生一个未经捕获的异常时都会终止该workflow。 工作流实例 表3-1 WorkflowInstance的属性 属性功能InstanceId得到workflow实例的唯一标识(一个Guid)WorkflowRuntime得到本workflow实例的WorkflowRuntime 表3-2 WorkflowInstance的方法 方法功能ApplyWorkflowChanges通过WorkflowChanges对象申请对workflow实例进行更改。这允许你在workflow执行时修改它(增加、移出或更改活动),当动态的更改实施时,workflow实例会被暂停。GetWorkflowDefinition检索本workflow实例的根(root)活动。Resume恢复执行先前被暂停的workflow实例。假如workflow实例并未处于暂停状态,则不做任何事情。假如workflow实例处在暂停状态,workflow运行时就会在workflow实例刚被恢复后触发WorkflowResumed事件。Start启动一个workflow实例的执行,在这个workflow实例根活动上调用ExecuteActivity。假如Start发生异常,它通过调用Terminate终止这个workflow实例,并附加异常相关信息作为终止的原因。Suspend同步暂停本workflow实例。假如workflow实例本就处于暂停状态,则不做任何事情。假如workflow实例正在运行,则workflow运行时就暂停该实例,然后设置SuspendOrTerminateInfoProperty(说明原因)并进入Suspend,触发WorkflowSuspended事件。Terminate同步终止本workflow实例。当宿主需要终止workflow实例时,workflow运行时就终止这个实例并试图持久化实例的最终状态。然后WorkflowInstance设置SuspendOrTerminateInfoProperty(说明原因)并进入Terminate。最后,它触发WorkflowTerminated事件并把终止原因传到WorkflowTerminateException中的Message属性并包含到WorkflowTerminatedEventArgs事件参数中。另外,假如在持久化时发生异常,workflow运行时取而代之地就把异常传到WorkflowTerminatedEventArgs事件参数中。 ActivityExecutionStatus是一个给定的workflow实例的workflow definition(工作流实例的GetWorkflowDefiniton()方法获得)为您提供workflow的执行状态的枚举。 表3-3 ActivityExecutionStatus枚举值 属性功能Canceling活动正在取消中。Closed活动已被关闭。Compensating活动处于补偿状态。Executing活动当前正在运行。Faulting活动已产生并维持一个异常。Initialized活动已被初始化但还未运行。 表4-1 活动(Activity)的属性 属性功能Description获取或设置用户定义的关于活动的描述。Enable获取或设置一个指明实例能否被执行和验证的值。ExecutionResult获取实例最后运行的结果(ActivityExecutionResult)。(有Canceled、Compensated、Faulted、None和Succeeded)。ExecutionStatus得到workflow的状态,其为ActivityExecutionStatus的枚举值(Canceling、Closed、Compensating、Executing、Faulting和Initialized)之一。Name获取或设置活动实例的名称。Parent获取包含本活动的父活动。WorkflowInstanceId获取和该活动相关的workflow实例的标识符。 表4-2 活动(Activity)的方法 属性功能Cancel取消活动的执行。Clone返回活动的一个深拷贝。Execute以同步方式运行活动。GetActivityByName假如在一个组合活动上执行,本方法将返回组合活动中所包含的指定名称的活动。Load从一个流中加载一个活动的实例。RaiseEvent触发一个和指定的依赖属性相关的事件。RaiseGenericEvent<T>触发和所引用的依赖属性相关的事件。RaiseEvent和RaiseGenericEvent的作用是一样的——第一个事件RaiseEvent直接指出DependencyPropenty,而RaiseGenericEvent则是一个泛型版本。Save把活动保存到流中。 表4-3 选择基本的workflow类型的判定表 workflow类型适用条件顺序工作流workflow任务可以自治的执行,很少由外部进行控制。主要由workflow自身来对执行的任务进行控制。只有少量用户或没有用户来和它进行交互。它的root活动是SequentialWorkflow活动。状态机工作流workflow任务严重依赖外部来控制和指示其执行。预期有很多的用户交互(或其它外部控制)。对于基于状态的workflow,root活动是StateMachineWorkflow活动。基于规则的工作流业务逻辑中包含复杂的判断条件,既不像顺序工作流也不像状态机工作流。基于规则的工作流或者有一个顺序的root活动,或者有一个基于状态的root活动。 shore 2008-04-26 11:33 发表评论转载于:https://www.cnblogs.com/hotsoho.net/archive/2008/04/26/1178850.html
相关资源:JAVA上百实例源码以及开源项目