2010-12-30 8 views
4

コンテンツタイプに関連付けられたワークフローがあります。私は、同じコンテンツタイプのイベントレシーバー内からコードからキックオフしようとします。そのため、アイテムが更新されたときに、特定の条件(ステータス=レビュー準備完了)があれば開始します。Sharepoint 2010ワークフローをプログラムで起動するエラー

//この行は次の行を、私は私がオンラインで見つける何かからこのラインを使用しようとしたが、それは

assoc = properties.Web.WorkflowAssociations 
    .GetAssociationByName("Experiment Review Workflow", 
     CultureInfo.CurrentUICulture); 

nullを返しますワークフローの関連付け

var assoc = properties.Web.ContentTypes["Experiment Document Set"] 
     .WorkflowAssociations.GetAssociationByName("Experiment Review Workflow", 
      ultureInfo.CurrentUICulture); 

//を見つけませんエラーを与える:

var result = properties.Web.Site.WorkflowManager 
         .StartWorkflow(properties.ListItem, assoc,string.Empty, 
             SPWorkflowRunOptions.Synchronous); 

System.ArgumentException: Workflow failed to start because the workflow is associated with a content type that does not exist in a list. Before re-starting the workflow, the content type must be added to the list.

は、私は更新されているリスト項目のコンテンツタイプを見ていた、これをチェックするには、

properties.ListItem.ContentType.Name "Experiment Document Set" 

だから基本的に私は、コンテンツタイプ「実験ドキュメントセット」に関連したworkfowを持って正しいです。 「Experiment Document Set」のイベント受信者からワークフローを開始しようとすると、意味のないリストにコンテンツタイプ「Experiment Document Set」が存在しないというエラーが表示されます。

答えて

0

assoc.Enabled = trueにしてください。

0

おそらく遅すぎると思われますが、StartWorkflowメソッドではString.Empty(またはnull)を使用できないことがわかりました。

http://www.tonytestasworld.com/post/Howto-Start-a-Sharepoint-Workflow-Programmatically.aspxから、assoc.AssociationDataは設定パラメータなしで簡単なワークフローに適しているようです。

これはまだテストしていません。なぜなら、前の2つのコード例で言及した問題と似たようなことがあります。

関連する問題