2012-07-18 21 views
10

Geçerli etkinlikten bir sonraki etkinliğe karar vermeye çalışıyorum (Otomatik karar etkinliği) Aşağıdaki kodum. Bir sonraki aktiviteyi nasıl belirleyebilirim?Geçerli otomatik etkinlikten sonraki aktiviteyi nasıl belirlersiniz?

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); 
    }    

} 

cevap

11

yerine ActivityFinishData kullanımı DecisionActivityFinishData

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

Çok teşekkürler, çalışma – user1428019

İlgili konular