0

外部 DB の更新が必要なカスタム ワークフローの実装があります。テキスト目的で簡単なワークフローを作成したところ、奇妙なことがわかりました。

私のデータベース更新/挿入コードは、ワークフローのコード アクティビティに配置されます。sharepoint カスタム リストの単純なリスト項目でワークフローが呼び出されると、コード アクティビティが複数回実行されるようです。これが私のワークフローです:

ワークフロー イメージ

私のコードは次のとおりです。

 private void onWorkflowActivated1_Invoked(object sender, ExternalDataEventArgs e)
{
    workflowProperties.Item["Title"] = "Processed by workflow at "+ DateTime.Now;
    workflowProperties.Item.Update();      
    
}

private void codeActivity1_ExecuteCode(object sender, EventArgs e)
{
    Random rnd = new Random();

    string conStr = "Data Source=192.168.1.57\\TRIBIRD;Initial Catalog=XXXXXX;User ID=XXXXXX;Password=XXXXXXXXXX";
    SqlConnection connection = new SqlConnection(conStr);
    SqlCommand command = connection.CreateCommand();
    command.CommandType = System.Data.CommandType.Text;
    command.CommandText = "INSERT INTO XXXX VALUES(" + rnd.Next() + ",'THE CONTENT FROM SHAREPOINT WORKFLOW','EN',1,1,'BRT')";

    connection.Open();
    command.ExecuteNonQuery();
    command.Dispose();
    connection.Close();
}

DB で、ワークフロー実行のために複数の行を取得します! 興味深いのは、各実行中に追加される行数が変化することです。

なぜこうなった?私の間違いは何ですか?
どんなアイデアや提案も大歓迎です。

4

1 に答える 1

0

SharePoint の最新のパッチと更新プログラムを実行していることを確認してください。

2007 年の以前のバージョンでは、周期的な自己トリガー (再トリガーなど) が許可されていました。それ以降のバージョンではサポートされていません (ただし、コサイクリック トリガーは引き続き許可されます)。これが問題であると思われ、「カスケード」がUpdateメソッドによって開始されています。ただの予感。

これは SP2 で修正する必要があります。Service Pack 2 により、変更時のワークフローが開始されなくなります。

于 2010-09-07T21:18:07.810 に答える