代码改变世界

SharePoint工作流开发点滴(1) - 一些概念

2007-01-04 09:15  Windie Chai  阅读(1959)  评论(1编辑  收藏  举报
 
  1. 模板(Template),关联(Association)和实例(Instance)
  2. 模板:部署到站点集中的工作流功能(Feature),用来描述该功能所包含的程序集和表单等信息.

    关联:将工作流模板与列表(List)或者内容类型(Content Type)联系起来,并向工作流提供初始值或参数.对应的表单叫做Association.

    实例:在列表或内容类型项上启动的工作流.对应的表单叫做Initiation.

    也就是说,实例是基于关联的,而关联又是基于模板的.一个列表或者内容类型可以拥有许多来自相同工作流模板的关联,但同一时刻同一关联只能启动一个工作流实例.

     

  3. 钝化(Dehydrated)
  4. 钝化指将工作流序列化(Serialized)并保存在数据库中.钝化后的工作流将从内存中清除.当工作流等待的事件发生时,工作流将反序列化(Deserialized)并被唤醒,然后继续它的流程.

    事务性动作(Transacted Action)和批处理动作(Batched Action)直到工作流钝化后才会提交.例如,CreateTask并没有马上创建任务,而是等到OnTaskChanged将工作流钝化之后才创建任务.所以在创建任务之后马上访问任务是错误的.

     

  5. Method Event Handle
  6. Method用来执行动作,例如CreateTask就是一个Method活动.

    Event Handle用来将工作流钝化,然后等待一定的事件被触发后唤醒工作流,例如OnTaskChanged就是一个Event Handle活动.

    MethodMethod InvokingMethod要执行的动作之前执行,Event HandleMethod Invoking却在Event Handle的事件触发之后执行.

     

  7. Correlation Token
  8. 将若干相关联的活动映射到同一集合的标识符,例如给CreateTask,OnTaskChangedCompleteTask指定相同的Correlation Token,则这几个活动被关联到同一个任务.

    SharePoint Workflow Actions,Correlation Token大致按照下表来分组指定:

    工作流

    任务

    修改

    OnWorkflowActivated

    OnWorkflowItemChanged

    OhWorkflowItemDeleted 

    SetState

    SendEmail

    UpdateAllTasks

     

    CreateTask

    CreateTaskWithContentType

    UpdateTask

    DeleteTask

    CompleteTask

    RollbackTask

    OnTaskChanged

    OnTaskDeleted

    OnTaskCreated

    EnableWorkflowModification

    OnWorkflowModified

     

  9. InfoPath表单
  10. 表单类型

    宿主ASPX

    需要执行的动作

    Event Handle

    接收数据的属性

    Association

    CstWrkflIP.aspx

    建立工作流模板和列表(或者内容类型)之间的关联

    Initiation

    IniWrkflIP.aspx

    启动工作流实例

    OnWorkflow Activated

    SPWorkflowActivationProperty.InitiationData

    Task

    WrkTaskIP.aspx

    更改了任务

    OnTaskChanged

    OnTaskChanged.AfterProperties

    Modification

    ModWrkflIP.aspx

    修改工作流

    OnWorkflowMosified

    OnWorkflowMosified.ContextData

    Association表单不接受数据,也不会存在相应的Event Handle,因为此时工作流实例还没有启动,便没有钝化和唤醒一说,不过Associatin中的数据却可以在SPWorkflowActivationProperty.AssociationData中获取.