Question 104
You plan to create a workflow that has the following three activities:
CreateTask
OnTaskChanged
CompleteTask
You need to ensure that each time the workflow starts, the three activities are linked to a single task.
What should you do?
A. Configure all activities to use the same TaskId.
B. Configure all activities to use the same correlation token.
C. Create an SPItemEventReceiver event receiver for the SharePoint Tasks list.
D. Create an SPWorkflowEventReceiver event receiver for the SharePoint Tasks list.html
解析:
本題的實質是要問如何知道某些Activities是屬於同一個工做流任務?
如同部隊有番號,識別哪些戰士屬於哪一個部隊就要看他所在部隊的番號。Sharepoint固然也採用了相似的機制,即:令牌
Sharepoint將相關令牌(Correlation Token) 做爲惟一標識符,以便在工做流中的對象與承載 Windows Workflow Foundation (WF) 工做流運行時的環境之間進行映射。Windows Workflow Foundation必須爲工做流提供某種與其餘軟件進行通訊的方式。Windows Workflow Foundation運行時充當與全部工做流之間的全部通訊的中間媒介。傳入請求到達時,運行時會接收該請求,而後肯定將該請求發送到哪一個工做流實例。以後運行時會將請求傳遞到目標實例。實際上,Windows Workflow Foundation充當了與工做流以外的軟件進行通訊的代理。
對於下列每一項,您都將擁有單獨的相關令牌:
1.工做流自己
2,須要在工做流中引用的各項任務 (即本題所說的狀況)
不要爲工做流任務和工做流自己分配相同的相關令牌。
爲 OnWorkflowActivated 活動中的工做流聲明相關令牌。而後,針對影響整個工做流的每一個活動,將該活動的相關令牌綁定到 OnWorkflowActivated 活動的相關令牌。
工做流中的每一個特定任務都應有其本身的相關令牌,每一個相關活動均可以使用該相關令牌訪問特定於任務的相同信息。例如,若是想在工做流中引用 CreateTask、CompleteTask 和 OnTaskChanged 活動中的相同任務,應將這些活動中的每一個活動的 CorrelationToken 屬性綁定到相同的相關令牌變量【這就是本題的答案】
再來看其它選項:
選項A. Configure all activities to use the same TaskId. TaskID就是用來標識WorkFlowTask的,既然如此爲何不能像令牌同樣用來做爲活動的標識呢?問題在於在TaskCreated Acitivity執行完成前,你是得不到TaskID的,緣由是此時工做流任務建立的信息尚未被Sharepoint工做流捕獲。 由此以來你又如何爲CreateTask Activity分配TaskID?
選項C. Create an SPItemEventReceiver event receiver for the SharePoint Tasks list. 這裏的SPItemEventReceiver類是用來捕獲發生在Item上的事件的,它並不能用來標識工做流任務內部的各個活動。
選項D. Create an SPWorkflowEventReceiver event receiver for the SharePoint Tasks list.這裏的 SPWorkflowEventReceiver類不可被實例化,它只是一個基類,主要用來建立捕獲工做流事件的相關類的,也不能用來標識工做流任務內部的各個活動。
因此本題目正確選項應該是B編輯器
參考:
http://msdn.microsoft.com/en-us/library/ms475438.aspx
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spitemeventreceiver.aspx
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.workflow.spworkfloweventreceiver.aspxide
Question 105
You create a custom workflow by using Microsoft Visual Studio 2010.
You need to specify a custom InfoPath workflow initiation form in the workflow element manifest file.
Which attribute should you configure?
A. Association_FormURN
B. Instantiation_FieldML
C. Instantiation_FormURN
D. InstantiationUrl編碼
解析:
本題使用VS2010建立用戶自定義工做流,想給此工做流指派一個InfoPath初始化表單,在工做流模板定義 XML 中如何實現?
咱們知道,在開始工做流以前,能夠向用戶顯示關聯和初始表單,以便他們能夠提早爲工做流設置參數和其餘信息。當工做流應用於特定的列表、庫或內容類型時,關聯表單處理工做流;當工做流應用於特定的 SharePoint 項目時,初始表單處理工做流。
咱們還能夠在工做流模板定義中包含預關聯數據。例如,您可能但願使用默認值預先填充關聯表單上的字段。
下面咱們來看看如何在工做流模板定義 XML 中分別指定關聯表單和初始化表單
1.指定關聯表單:
對於全部工做流表單,能夠在工做流模板定義 XML 中指定工做流的關聯表單。爲此,請編輯兩個 XML 元素。
i.將 Workflow 元素的 AssociationURL 屬性的值設置爲「_layouts/CstWrkflIP.aspx」。這是隨 Microsoft SharePoint Server 2010 提供的 .aspx 頁面;此頁面包含用於承載 Microsoft InfoPath 2010 工做流關聯表單的 InfoPath Forms Services Web 部件:
ii. 將 Association_FormURN 元素添加到工做流模板定義中的 Metadata 元素。使用此元素能夠指定您要用於工做流關聯的 Office InfoPath 2007 表單的 URN。
2.指定初始化表單
若要指定 InfoPath 2010 工做流初始表單,您必須編輯工做流模板定義中的兩個元素。
i. 將 Workflow 元素的 InstantiationURL 屬性的值設置爲「_layouts/IniWrkflIP.aspx」。這是隨 SharePoint Server 2010 提供的 .aspx 頁面;此頁面包含用於承載 InfoPath 2010 工做流初始表單的 Office InfoPath Forms Services Web 部件
ii.將 Instantiation_FormURN 元素添加到工做流模板定義中的 Metadata 元素。使用此元素能夠指定您要用於工做流啓動的 InfoPath 2010 表單的 URN。
因此,根據上面的描述就解決了選項A,選項C與選項D。且選項C就是本題的答案。
至於選項 B. Instantiation_FieldML,從如下工做流模板Workflow的Element元素描述能夠看出,沒有Instantiation_FieldML這個屬性。spa
<Workflow Title="Text" Name="Text" CodeBesideAssembly="Text" CodeBesideClass="Text" Description="Text" Id="Text" EngineClass="Text" EngineAssembly="Text" AssociationUrl="Text" InstantiationUrl="Text" ModificationUrl="Text" StatusUrl="Text" TaskListContentTypeId="Text" > </Workflow>
因此本題目正確選項應該是C
參考:
http://msdn.microsoft.com/en-us/library/aa672715.aspx
http://msdn.microsoft.com/zh-cn/library/ms563325(v=office.14).aspx
http://msdn.microsoft.com/zh-cn/library/ms481192(v=office.14).aspx設計
Question 106
You are creating a custom workflow action to be used in Microsoft SharePoint Designer reusable workflows.
The action programmatically creates a SharePoint site named Site1 at a specific URL. The workflow actions schema file contains the following code segment.
<WorkflowInfo>
<Actions Sequential="then" Parallel="and">
<Action Name="Create Site"
ClassName="SPDActivityDemo.CreateSite"
Assembly="SPDActivityDemo, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1a4a7a2c3215a71b"
AppliesTo="all"
Category="Test">
<Parameters>
<Parameter Name="Url" Type="System.String, mscorlib" Direction="In" />
<Parameters>
</Action>
</Actions>
</WorkflowInfo>
You need to ensure that users can specify the URL property of the action in SharePoint Designer.
What should you add to the schema of the action?
A. <xml version="1.0" encoding="utf-8">
B. <Option Name="equals" Value="Equal"/>
C. <Parameter Name="Url" Type="System.String, mscorlib" Direction="Out" />
D. <RuleDesigner Sentence="Create site at Url %1.">
<FieldBind Field="Url" Text="Url of site" Id="1" DesignerType="TextArea" />
</RuleDesigner>
解析:
本題是講你建立了一個自定義工做流活動以用於Sharepoint Designer,此活動所做的工做就是按給定的URL建立Sharepoint Site,其中URL可由Sharepoint Designer的設計者肯定,如何完善本題題幹中的代碼?
SharePoint2010提供了不少有用的開箱即用的Activity(活動action),咱們能夠在SharePoint Designer 2010 中看到這些自帶的操做(actions).但有時當這些需求不能知足個人需求,可是我又想用開箱即用的Activity(活動action)來設計工做流,這時咱們就須要開發本身的Workflow Activity(action),即本題的目的。
一般咱們在VS2010中開發Custom Workflow Action的過程當中,在咱們完成了Action的後臺邏輯代碼以後,咱們就須要添加一個xml配置文件,其後綴名爲Actions,此Action文件會被SharePoint Desginer 2010識別。
下面就是一個Action代碼代理
<WorkflowInfo> <Conditions>…</Conditions> <Actions Sequential="then" Parallel="and"> <Action Name="Update my custom SharePoint list" ClassName="CustomActivities.OrderListFunctions" Assembly="CustomActivities, PublicKeyToken=b03f5f7f11d50a3a, Version=1.0.0.0, Culture=neutral" Category="My Custom Actions" CreatesTask="true" CreatesInList="UpdateList" AppliesTo="all" ListModeration="false" UsesCurrentItem="true"> <RuleDesigner Sentence="Update %1"> <FieldBind Field="UpdateList" Function="UpdateOrderList" DesignerType="ChooseListItem" ID="1" Text="My Custom List"> </FieldBind> </RuleDesigner> <Parameters> <Parameter Type="System.String, mscorlib" Direction="In" Name="UpdateList" </Parameters> </Action> </Actions> </WorkflowInfo>
從代碼中咱們知道,<Action>節下只有兩個子元素:
1.RuleDesigner: 此元素用於描述工做流設計界面上對添加此Action的參數。這也是本題須要的,即向Sharepoint Designer這個設計器提供本Action的參數輸入。它又包含兩個子元素:
i.FieldBind: FieldBind 元素是 RuleDesigner 元素的子級。這些元素共同用於建立一個易讀的語句,此語句用於描述須要計算的條件或必須執行的活動。若是這些元素構造正確,則它們還可用於在語句中插入變量(如超連接),以便無代碼工做流編輯器能夠在運行工做流時將動態值替換到工做流中。FieldBind 元素將工做流建立者輸入的內容映射到參數,這些參數而後傳遞給 Microsoft SharePoint Foundation 2010。code
<RuleDesigner> <FieldBind> <Option/> </FieldBind> </RuleDesigner>
ii.Option: 用於填充非數據綁定的 DesignerType 下拉列表框控件。Option 元素包含可用於構建工做流語句的文本和值對。它們還包含有關其 .NET 數據類型的信息。【本題的選項B】
而RuleDesigner 的屬性:Sentence指定了設計時顯示的提示信息,其中的佔位符號%與RuleDesigner中的FieldBind的ID屬性配置。orm
2.Parameters: 用做全部 Parameter 元素的容器,它不包含任何可定義屬性,但包括某個條件或操做方法簽名中的參數的說明。Parameters 元素是一類複雜的元素類型,它可與 Actions 和 Conditions 元素一塊兒使用以定義其參數。xml
本文將介紹如何開發一個自定義的Workflow Activity(action),並在SharePoint Designer 2010 使用該自定義的Workflow Activity。
因此,綜上所述,只有選項D是比較完整的對於Action的參數的定義。選項B.C都只是其中的局部描述。
而至於選項A <xml version="1.0" encoding="utf-8">:這只是在XML標記語言文件中用於聲明XML的版本和編碼方式的聲明語句,與本題無關。
因此本題目正確選項應該是D
參考:
http://msdn.microsoft.com/en-us/library/bb897951.aspx
http://msdn.microsoft.com/zh-cn/library/bb897917.aspx
http://msdn.microsoft.com/zh-cn/library/bb897971.aspx
http://msdn.microsoft.com/zh-cn/library/bb897931(v=office.14).aspx