2

Sharepoint Designer でワークフローを作成しようとしています。ワークフローは、標準の承認ワークフローが完了するまで待機する必要があります。これは、アイテムの作成でワークフローを開始し、waitアクティビティを使用することによって行われます。

現在のアイテムのフィールド変更を
待つ: InternalApproval が 16 になるのを待つ

問題: ルールは正しいのに、アイテムを編集しないとイベントが発生しません。通常、すべての編集でワークフロー チェックがトリガーされますが、私のテストでは、ワークフローを承認しても item でこのイベントがトリガーされないことが示されています。

この問題を回避する簡単な方法はありますか? 私は忙しい待機を実装することについて考えましたが、どのように(wait 5 minutesアクティビティがありますが、ありませんgoto)?別のワークフローが完了するのを待つことができる、または条件が満たされるまでビジー待機できる、ダウンロードできるアクティビティはありますか?
私の問題を解決する別の方法は、InternalApproval ワークフローがフィールドを変更した場合ですが、それも達成できません...

4

4 に答える 4

1

これは予想される動作です。アイテムへの変更時にそれ自体をキャンセルするように配線されている承認ワークフローは、そうでなければ役に立たないでしょう。APIレベルでは、SharePointは、実行中のアイテムを更新する必要があるときにイベントが発生しないようにします。

-オシーン

于 2009-09-13T19:13:54.990 に答える
1

記事「リストの変更を待つ方法、複数のフィールドの変更を待つ方法」の記事は、現在のアイテムのフィールドの変更を待つ別のテイクの現在のアイテムを変更します(以下のリンク)。

この記事では、標準(OOB)ワークフローアクションを使用し、SharePointDesignerを使用して開発されたワークフローを構成する方法について説明します。「現在のアイテムのフィールド変更を待つ」アクションを使用する代わりに、待機が終了した後に完了するワークフローのコンポーネントが別の「変更時」ワークフローに追加されます。このワークフローは、最初のステップで標準条件を使用して、続行できます。現在のアイテムのフィールドの条件が満たされていない場合、ワークフローは停止します。ワークフローの別のインスタンスが実行されている場合、インスタンスの実行中に「Workflow_running」フィールドをyesに設定すると、新しいインスタンスも停止します。

この手法を使用すると、特定の基準が満たされるのを待つときに、より詳細に制御できます。これには、別のリストアイテムのフィールドが更新されるまで待機できることや、現在のアイテムの複数のフィールドを待機できることが含まれます。

詳細については、「リストの変更を待つ方法、複数のフィールドが現在のアイテムを変更するのを待つ(SharePointワークフロー)」を参照してください。

于 2009-11-28T07:42:03.733 に答える
1

変更が行われるまで待機し、ワークフローを再開するカスタム ワークフロー アクティビティを作成することになりました。このアクティビティは 2 つの方法で使用できます。メイン ワークフロー、または 2 番目のワークフローで、トリガーされない変更を待機し、トリガーとなる変更を行います (メイン ワークフローが再開されます)。
書くのはとても楽しかったです。Reflector を使用して、OOTB アクティビティ (通常のフィールド変更の待機) からいくつかのコードをコピーし、そのアクション xml をコピーしました。これは、フィールド、演算子、および値のリストを提供するいくつかの試行の後、非常にうまく機能します。

カスタム SharePoint ワークフロー アクティビティ - ブログを書いています

Helperクラスを使用して、条件を確認することも非常に簡単です。すべてのプロパティとそのバインディングは、Reflector を使用してコピーされました。

public void CheckStopCondition(object sender, ConditionalEventArgs e)
{
    bool checkAgainLater = Helper.TestListItem(Context, ListId, ListItem, 
                                               FieldName, Operator, Value);
    e.Result = checkAgainLater;
}
于 2009-09-17T12:43:59.613 に答える
0

承認に 1 つのワークフローを使用し、フィールドを更新するために別のワークフローを使用する場合、「現在のアイテムのフィールド変更を待機する」を使用して、承認が行われたときにフィールドを更新できます (承認済みコード 16、拒否済みコード 17、進行中コード 2 のいずれか)。以下に例を示します。

MomoApproval が 16 になるのを待ってから、Notification を Final に設定します。

SharePoint はワークフローに関連するフィールドを変更するため、承認が行われたときにこのコードは実行されません。このフィールドはリストのスキーマに属していません。したがって、ワークフロー ステータスの変更は、アイテム変更イベントをトリガーしません。アイテム変更イベントがないと、2 番目のワークフローはアイドル状態のままになり、「現在のアイテムのフィールド変更を待機する」アクションは役に立たないように見えます。SharePoint 2010 承認ワークフローのこの動作をバイパスするには、次の手順を実行します。

  1. SharePoint デザイナー 2010 を開く
  2. 作業しているサイトに移動します
  3. ワークフローをクリックします
  4. 承認ワークフローを右クリック
  5. [コピーして変更] をクリックします。
  6. 関連リストへ
  7. [既存のワークフローを関連付ける] をクリックします
  8. このワークフロー内で、[ワークフローの編集] をクリックし、[承認ワークフロー タスク] をクリックします。
  9. 単一のタスクの動作を変更をクリックします
  10. 完全なセクションに移動し、このアクション「タイトルを現在のアイテムに設定: タイトル」を追加します。

これにより、アイテム変更イベントをトリガーするリストのスキーマ内のタイトル フィールドが変更されますが、タイトルの値は同じままです。このアクションは、リストのデータ コンテンツには影響しません。これは、アクティビティの作成、ループ、ワークフローの一時停止と再起動などの他のソリューションと比較して、問題なく機能し、コストがかからない単純な回避策です。

ワークフローを作成したら、Visual Studio 2010 にインポートしてソリューションの一部にすることができます。次のリンクを参照してください: http://msdn.microsoft.com/en-us/library/ee231580.aspx

ワークフローの更新をお楽しみください

注:フィールドを更新しているワークフローは、リスト内で項目が変更されたときに開始するようにバインドする必要があります。

モハメド・ハケム

于 2011-08-24T15:18:50.300 に答える