2012-07-18 2 views
10

현재 액티비티에서 다음 액티비티를 결정하려고합니다. (자동 결정 액티비티) 다음은 내 코드입니다. 다음 활동을 설정하는 방법?현재 활동에서 다음 활동을 설정하는 방법은 무엇입니까?

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

} 

답변

11

대신 ActivityFinishData 사용 DecisionActivityFinishData

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

덕분에 많이, 그 작업 – user1428019