2012-07-18 29 views
10

Tôi đang cố gắng quyết định hoạt động tiếp theo từ hoạt động hiện tại (Hoạt động quyết định tự động) Dưới đây là mã của tôi. Làm cách nào để đặt hoạt động tiếp theo?Cách đặt hoạt động tiếp theo từ hoạt động tự động hiện tại?

public void DebugUserCheck(string workitemid) 
{ 
    CoreServiceSession client = new CoreServiceSession(); 
    SessionAwareCoreServiceClient csClient = client.GetClient(); 
    var readoption = new ReadOptions(); 
    WorkItemData workitem = (WorkItemData)csClient.Read(workitemid, readoption);   


    ActivityInstanceData currentactivity = (ActivityInstanceData)csClient.Read(workitem.Activity.IdRef, readoption); 
    TridionActivityDefinitionData activitydefinition = (TridionActivityDefinitionData)csClient.Read(currentactivity.ActivityDefinition.IdRef, readoption); 
    ProcessDefinitionData processdefinition = (ProcessDefinitionData)csClient.Read(activitydefinition.ProcessDefinition.IdRef, readoption); 
    IList<ActivityDefinitionData> activityDefinitions = new List<ActivityDefinitionData>(processdefinition.ActivityDefinitions); 

    string superuseractivitytitle = ""; 
    string superuseractivityid = ""; 
    string normaluseractivitytitle = ""; 
    string normaluseractivityid = ""; 

    foreach (var activity in activityDefinitions) 
    { 
    if (activity.Title == "Override") 
    { 
     superuseractivitytitle = activity.Title; 
     superuseractivityid = activity.Id;      
    } 
    if (activity.Title == "Author Decision") 
    { 
     normaluseractivitytitle = activity.Title; 
     normaluseractivityid = activity.Id; 
    } 
    } 


    UserData user = csClient.GetCurrentUser(); 

    if (user.Id == "tcm:0-141-65552") 
    { 
    ActivityDefinitionData nextactivity = (ActivityDefinitionData)csClient.Read(superuseractivityid, readoption); 
    ActivityFinishData finishdata = new ActivityFinishData(); 
    finishdata.Message = "Automatic decision activity finished"; 
    csClient.FinishActivity(currentactivity.Id, finishdata, readoption); 
    } 
    else 
    { 
    ActivityDefinitionData nextactivity = (ActivityDefinitionData)csClient.Read(normaluseractivityid, readoption); 
    ActivityFinishData finishdata = new ActivityFinishData(); 
    finishdata.Message = "Automatic decision activity finished"; 
    csClient.FinishActivity(currentactivity.Id, finishdata, readoption); 
    }    

} 

Trả lời

11

Thay vì sử dụng ActivityFinishDataDecisionActivityFinishData

var decisionActivityFinishData = new DecisionActivityFinishData 
{ 
    NextActivity = new LinkToActivityDefinitionData{IdRef = "next activity ID"} 
}; 
csClient.FinishActivity(currentactivity.Id, decisionActivityFinishData, 
         readoption); 
+0

Cảm ơn rất nhiều, làm việc của nó – user1428019

Các vấn đề liên quan