SharePoint工作流開發(fā)點(diǎn)滴(一些概念)

字號(hào):

模板(Template),關(guān)聯(lián)(Association)和實(shí)例(Instance)
    模板:部署到站點(diǎn)集中的工作流功能(Feature),用來(lái)描述該功能所包含的程序集和表單等信息.
    關(guān)聯(lián):將工作流模板與列表(List)或者內(nèi)容類型(Content Type)聯(lián)系起來(lái),并向工作流提供初始值或參數(shù).對(duì)應(yīng)的表單叫做Association.
    實(shí)例:在列表或內(nèi)容類型項(xiàng)上啟動(dòng)的工作流.對(duì)應(yīng)的表單叫做Initiation.
    也就是說(shuō),實(shí)例是基于關(guān)聯(lián)的,而關(guān)聯(lián)又是基于模板的.一個(gè)列表或者內(nèi)容類型可以擁有許多來(lái)自相同工作流模板的關(guān)聯(lián),但同一時(shí)刻同一關(guān)聯(lián)只能啟動(dòng)一個(gè)工作流實(shí)例.
    鈍化(Dehydrated)
    鈍化指將工作流序列化(Serialized)并保存在數(shù)據(jù)庫(kù)中.鈍化后的工作流將從內(nèi)存中清除.當(dāng)工作流等待的事件發(fā)生時(shí),工作流將反序列化(Deserialized)并被喚醒,然后繼續(xù)它的流程.
    事務(wù)性動(dòng)作(Transacted Action)和批處理動(dòng)作(Batched Action)直到工作流鈍化后才會(huì)提交.例如,CreateTask并沒(méi)有馬上創(chuàng)建任務(wù),而是等到OnTaskChanged將工作流鈍化之后才創(chuàng)建任務(wù).所以在創(chuàng)建任務(wù)之后馬上訪問(wèn)任務(wù)是錯(cuò)誤的.
    Method 和 Event Handle
    Method用來(lái)執(zhí)行動(dòng)作,例如CreateTask就是一個(gè)Method活動(dòng).
    Event Handle用來(lái)將工作流鈍化,然后等待一定的事件被觸發(fā)后喚醒工作流,例如OnTaskChanged就是一個(gè)Event Handle活動(dòng).
    Method的Method Invoking在Method要執(zhí)行的動(dòng)作之前執(zhí)行,而Event Handle的Method Invoking卻在Event Handle的事件觸發(fā)之后執(zhí)行.
    Correlation Token
    將若干相關(guān)聯(lián)的活動(dòng)映射到同一集合的標(biāo)識(shí)符,例如給CreateTask,OnTaskChanged和CompleteTask指定相同的Correlation Token,則這幾個(gè)活動(dòng)被關(guān)聯(lián)到同一個(gè)任務(wù).
    在SharePoint Workflow Actions中,Correlation Token大致按照下表來(lái)分組指定: 工作流 任務(wù) 修改
    OnWorkflowActivated OnWorkflowItemChanged OhWorkflowItemDeleted  SetState SendEmail UpdateAllTasks CreateTask CreateTaskWithContentType UpdateTask DeleteTask CompleteTask RollbackTask OnTaskChanged OnTaskDeleted OnTaskCreated EnableWorkflowModification OnWorkflowModified
    InfoPath表單 表單類型 宿主ASPX 需要執(zhí)行的動(dòng)作 Event Handle 接收數(shù)據(jù)的屬性
    Association CstWrkflIP.aspx 建立工作流模板和列表(或者內(nèi)容類型)之間的關(guān)聯(lián) 無(wú) 無(wú)
    Initiation IniWrkflIP.aspx 啟動(dòng)工作流實(shí)例 OnWorkflow Activated SPWorkflowActivationProperty.InitiationData
    Task WrkTaskIP.aspx 更改了任務(wù) OnTaskChanged OnTaskChanged.AfterProperties
    Modification ModWrkflIP.aspx 修改工作流 OnWorkflowMosified OnWorkflowMosified.ContextData
    Association表單不接受數(shù)據(jù),也不會(huì)存在相應(yīng)的Event Handle,因?yàn)榇藭r(shí)工作流實(shí)例還沒(méi)有啟動(dòng),便沒(méi)有鈍化和喚醒一說(shuō),不過(guò)Associatin中的數(shù)據(jù)卻可以在SPWorkflowActivationProperty.AssociationData中獲取.