void dsc_GetProcessInstanceTraceXmlCompleted(object sender, GetProcessInstanceTraceXmlCompletedEventArgs e) { //流程跟踪 ObservableCollection <ProcessInstanceTrace> pits = e.Result; foreach (ProcessInstanceTrace item in pits) { if (UserControls.ContainsKey(item.FromNodeId)) { UserControls[item.FromNodeId].SetState(StateEnum.COMPLETED); } if (UserControls.ContainsKey(item.EdgeId)) { UserControls[item.EdgeId].SetState(StateEnum.COMPLETED); } if (UserControls.ContainsKey(item.ToNodeId)) { UserControls[item.ToNodeId].SetState(StateEnum.RUNNING); } } for (int i = pits.Count - 1, j = 0; i >= 0 && j < 4; i--, j++) { if (UserControls.ContainsKey(pits[i].EdgeId)) { UserControls[pits[i].EdgeId].SetState(StateEnum.RUNNING); } if (UserControls.ContainsKey(pits[i].FromNodeId) && UserControls[pits[i].FromNodeId] is ActivityControl) { break; } } }