2012-07-31 176 views
2

我正在創建一個事件處理程序以獲取所有活動的活動實例詳細信息。無法獲得手動活動的所有者和執行者

EventSystem.Subscribe<ActivityInstance, FinishActivityEventArgs>(NotifyUser, EventPhases.TransactionCommitted); 

在「NotifiyUser」功能,我試圖讓activityinstance細節,如(標題,FinishMessage,老闆,演員,等等。)

我能夠得到所有的細節「自動活動「的」手動活動「,我無法獲得」所有者「和」表演者「的價值觀。

private void NotifyUser(ActivityInstance activityInstance, FinishActivityEventArgs args, EventPhases phase) 
    { 
     _session = activityInstance.Session; 
     logdetails("Activity Owner--->" + activityInstance.Owner.Title); 
     foreach (var performer in activityInstance.Performers) 
     { 
      logdetails("Activity Performer--->" + performer.Title); 
     } 
    } 
+0

您是否嘗試過這樣做_before_該活動已提交?嘗試啓動階段,也許這些屬性不再可用? – 2012-07-31 05:46:27

+0

肯努諾,我會檢查。但是,我能夠爲第一個手動活動(分配給每個人)以及所有剩餘的自動活動獲取這些屬性,但不能用於手動活動。背後有什麼理由? – user1428019 2012-07-31 06:04:02

+0

不會這麼想,這很奇怪。我會在我的盒子上嘗試 – 2012-07-31 06:07:29

回答

3

這很奇怪,我不能重現它。

在我的代碼我這樣做(相同的訂閱你)

private void LogSomething(ActivityInstance instance, FinishActivityEventArgs args, EventPhases phases) 
{ 
    User owner = instance.Owner; 
    File.AppendAllLines("c:\\temp\\info.log", new[] 
     { 
      string.Format("Activity ID: {0} owned by: {1}({2}", instance.Id, owner.Title, owner.Id) 
     }); 
    List<User> performers = new List<User>(instance.Performers); 
    foreach (var performer in performers) 
    { 
     File.AppendAllLines("c:\\temp\\info.log", new[] 
      { 
       string.Format("Activity ID: {0} Performer: {1}({2}", instance.Id, performer.Title, performer.Id) 
      }); 
    } 
} 

道歉我粗記錄。

這是我得到info.log建立:

Activity ID: tcm:3-923-131104 owned by: T2011GURUV3\Administrator(tcm:0-11-65552 
Activity ID: tcm:3-923-131104 Performer: T2011GURUV3\Administrator(tcm:0-11-65552 
Activity ID: tcm:3-924-131104 owned by: NT AUTHORITY\SYSTEM(tcm:0-3-65552 
Activity ID: tcm:3-924-131104 Performer: NT AUTHORITY\SYSTEM(tcm:0-3-65552 
Activity ID: tcm:3-925-131104 owned by: T2011GURUV3\Administrator(tcm:0-11-65552 
Activity ID: tcm:3-925-131104 Performer: T2011GURUV3\Administrator(tcm:0-11-65552 
Activity ID: tcm:3-926-131104 owned by: T2011GURUV3\Administrator(tcm:0-11-65552 
Activity ID: tcm:3-926-131104 Performer: T2011GURUV3\Administrator(tcm:0-11-65552 
Activity ID: tcm:3-927-131104 owned by: NT AUTHORITY\SYSTEM(tcm:0-3-65552 
Activity ID: tcm:3-927-131104 Performer: NT AUTHORITY\SYSTEM(tcm:0-3-65552 
Activity ID: tcm:3-928-131104 owned by: T2011GURUV3\Administrator(tcm:0-11-65552 
Activity ID: tcm:3-928-131104 Performer: T2011GURUV3\Administrator(tcm:0-11-65552 

如此看來,這可能是與你的環境?也許是特定版本的缺陷?我在SDL Tridion 2011 SP1上使用修補程序彙總1

+0

感謝Nuno,我無法讓我的工作流程中的最後活動的執行者。並得到錯誤「The item tcm:56-1723-131104 does not exist」我試着用Transactioncommited和Processed階段。我甚至不能使用啓動階段,因爲我需要生成FinishMessage。 – user1428019 2012-07-31 09:38:56

+1

我認爲我沒有嘗試過,直到工作流過程結束,並且現在無法繼續測試。你可以在活動完成之前嘗試(EventPhase.Initiated)並檢查它是否可用?也許這是預期的,我不確定這一點。 – 2012-07-31 09:47:02

+0

在「已啓動」階段能夠獲得執行者,但是我還需要特定活動的完成消息,如果我使用啓動階段,則不會收到完成消息。 – user1428019 2012-07-31 09:55:51