Esempio n. 1
0
 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;
         }
     }
 }
Esempio n. 2
0
        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();
            }
        }
Esempio n. 3
0
 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);
 }
Esempio n. 4
0
 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);
 }
Esempio n. 5
0
 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();
     }
 }
Esempio n. 6
0
 public static void DelegateEvent(IWfBox box, IWfDialog wfDlg, WfClientAPIHandler handle)
 {
     DelegateEvent(box, wfDlg, handle, null);
 }