1

SharePoint ワークフローとイベント レシーバーについて質問があります。要素にメタデータを設定するイベント レシーバーを取得しました。その後、ワークフローを使用してアイテムのメタデータをリストにコピーします。残念ながら、ワークフローはイベント レシーバーによって設定されたメタデータをコピーしません。イベントレシーバーの前に実行されるためだと思います。イベントレシーバーの後にワークフローが実行されるように、順序を変更する可能性はありますか? レシーバーは、同期的に ItemAdded および ItemUpdated イベントにバインドされます。

ご協力ありがとうございました!パトリック

4

2 に答える 2

2

SPWorkFlowAssociation を使用して、 List または Content Type に関連付けるワークフローを実行できます。例 (アイテムを追加した後にワークフローを実行する)

public override void ItemAdded(SPItemEventProperties properties)  
{  

    SPList parentList = properties.ListItem.ParentList;  
    SPWorkflowAssociation associationTemplate =         
      parentList.WorkflowAssociations.GetAssociationByName("Your Workflow Name",   
      new CultureInfo  
        (Convert.ToInt32(parentList.ParentWeb.RegionalSettings.LocaleId)));  
    SPSite siteCollection = properties.ListItem.ParentList.ParentWeb.Site;  
      siteCollection.WorkflowManager.StartWorkflow(properties.ListItem,  
      associationTemplate, String.Empty);  

}  

SPWorkflowAssociation の詳細については、以下のリンクを確認してください。

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.workflow.spworkflowassociation.aspx

于 2010-12-20T06:13:53.383 に答える
0

SPListItem:

「同期」イベント (-ing は ItemAdd*ing* のように終了) は、常にワークフローの前に実行されます。

「非同期」イベント (ItemAdd*ed* のように終了する -ed) は、ワークフローの実行後に常に実行されます。

そのため、Elements.xml ファイルの「同期」プロパティを「同期」に設定する必要があり、ワークフローは常にイベント レシーバーの後に実行されます。

注意: 追加されたイベントと更新されたイベントはデフォルトで非同期に実行されるため、 Elements.xml で変更を行う必要があります。

于 2014-01-24T14:43:32.173 に答える