public static void Delegate(IWfBox box, IWfDialog wfDlg) { IDictionary<string, WorkItem> workItems = null; WorkItem firstSelectedWorkItem = null; try { DataRowView[] selectedRows = GetSelectedRows(box.DataSource as DataView); workItems = GetWorkItems(box, selectedRows); firstSelectedWorkItem = GetFirstSelectedWorkItem(box); } catch (NotSelectException) { } wfDlg.WorkItem = firstSelectedWorkItem; if (wfDlg.ShowDialog() == DialogResult.OK) { WfLogicalAbnormalContextData contextData = new WfLogicalAbnormalContextData(); wfDlg.SetContextData(contextData); WfUtil.SetAbnormalContextData(contextData); WorkflowService.WfcInstance.Delegate(workItems); box.RefreshData(); WfUtil.FreeAbnormalContextData(); if (firstSelectedWorkItem == null) { WorkflowService.IsMyAllDelegated = true; } } }
private static void PassToNext(IDictionary<string, WorkItem> workItems, DataRowView[] rows, IWfDialog wfDlg) { try { LoggingService.InfoFormatted("开始进行转出操作...", new object[0]); Dictionary<string, WfLogicalPassContextData> dictionary = new Dictionary<string, WfLogicalPassContextData>(); SmIdentity smIdentity = SecurityUtil.GetSmIdentity(); foreach (WorkItem item in workItems.Values) { switch (CheckCondition(item)) { case WfAbnormalType.SUSPENDED: WorkflowService.WfcInstance.Suspend(item); goto Label_017A; case WfAbnormalType.TERMINATED: WorkflowService.WfcInstance.Terminate(item); goto Label_017A; case WfAbnormalType.NO_ABNORMAL: WfLogicalPassContextData data; if (!dictionary.ContainsKey(item.ActdefId)) { data = new WfLogicalPassContextData(); wfDlg.WorkItem = item; switch (wfDlg.ShowDialog()) { case DialogResult.OK: wfDlg.SetContextData(data); break; case DialogResult.Cancel: return; } data.FromStaffId = smIdentity.UserId; data.FromStaffName = smIdentity.UserName; } else { data = dictionary[item.ActdefId]; } data.FromActivityKey = item.ActinstId; data.FromActivityName = item.ActinstName; data.FromAssignId = item.Id; WfUtil.SetPassContextData(data); WorkflowService.WfcInstance.CompleteWorkItem(item); goto Label_017A; case WfAbnormalType.ABROTED: WorkflowService.WfcInstance.Abort(item); goto Label_017A; } throw new WfClientException("Not implement the abnormal type operation of condition pass to next"); Label_017A:; } DeleteRows(rows); LoggingService.InfoFormatted("转出操作完成...", new object[0]); } catch (CancelExecuteException) { } finally { wfDlg.Close(); WfUtil.FreePassContextData(); } }
public static void PassToNext(WorkItem workItem, DataRowView row, IWfDialog wfDlg) { IDictionary<string, WorkItem> workItems = new Dictionary<string, WorkItem>(); workItems.Add(workItem.Id, workItem); PassToNext(workItems, new DataRowView[] { row }, wfDlg); }
public static void PassToNext(IWfBox box, IWfDialog wfDlg) { DataRowView[] selectedRows = GetSelectedRows(box.DataSource as DataView); if (LoggingService.IsInfoEnabled) { LoggingService.InfoFormatted("选中了{0}件可转出的业务", new object[] { selectedRows.Length }); } PassToNext(GetWorkItems(box, selectedRows), selectedRows, wfDlg); }
public static void DelegateEvent(IWfBox box, IWfDialog wfDlg, WfClientAPIHandler handle, string[] batchField) { try { DataRowView[] selectedRows = GetSelectedRows(box.DataSource as DataView, batchField); IDictionary<string, WorkItem> workItems = GetWorkItems(box, selectedRows); IEnumerator<KeyValuePair<string, WorkItem>> enumerator = workItems.GetEnumerator(); enumerator.MoveNext(); KeyValuePair<string, WorkItem> current = enumerator.Current; wfDlg.WorkItem = current.Value; if (wfDlg.ShowDialog() == DialogResult.OK) { WfLogicalAbnormalContextData contextData = new WfLogicalAbnormalContextData(); wfDlg.SetContextData(contextData); WfUtil.SetAbnormalContextData(contextData); DelegateEvent(selectedRows, workItems, handle); WfUtil.FreeAbnormalContextData(); } } finally { wfDlg.Close(); } }
public static void DelegateEvent(IWfBox box, IWfDialog wfDlg, WfClientAPIHandler handle) { DelegateEvent(box, wfDlg, handle, null); }