0
我有一個自定義的工作流程實現需要更新外部數據庫。我爲文本目的創建了一個簡單的工作流程,發現了一件奇怪的事情在SharePoint工作流程中重複執行代碼活動?
我的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我獲得超過1行中的工作流執行!有趣的是,在每次執行期間,添加的行數都不相同。
這是怎麼發生的?我的錯誤是什麼?
歡迎任何想法和建議。
@pst ..謝謝?我的真實工作流程將在兩者之間進行審批流程,並且只有在項目獲得批准後,數據纔會更新/插入到外部數據庫中。任何最佳實踐或解決此問題的其他解決方案? – 2010-09-07 21:22:00
@Abdel我用一個(希望)有用的鏈接更新了我的回覆。如果此問題是由於變更事件引起的,則SP2應修復觀察到的行爲。當我創建了這樣的工作流程(聽起來像這樣)時,我保持工作流程流程簡短並保持項目本身的狀態。然後,我假定該項目在工作流程運行時不會被外部更改(工作流本身可能會更改項目,SP2會阻止重新觸發)。有了這個假設和SP2修復,一切運作良好。 – 2010-09-07 21:25:35
@pst,我做了升級,仍然沒有工作!我會嘗試重新部署工作流程並測試... – 2010-09-07 22:58:27