示例#1
0
        private string GetOpeName(InstanceData data, WorkItem wi, InstanceLogRule rule)
        {
            string opeName = "";

            try
            {
                string value = data[rule.DataField].Value + string.Empty;
                if (wi.ActionEventType == ActionEventType.Backward)
                {
                    opeName = "驳回";
                }
                else if (!string.IsNullOrEmpty(value))
                {
                    var v = value.ToLower();
                    if (rule.ValJson != null)
                    {
                        opeName = rule.ValJson[v];//"通过";
                    }
                    else
                    {
                        opeName = value;
                    }
                }
                else
                {
                    switch (wi.ActionEventType)
                    {
                    case ActionEventType.Backward: opeName = "驳回"; break;

                    case ActionEventType.Forward: opeName = "通过"; break;

                    default: opeName = "已完成"; break;
                    }
                }
            }
            catch (Exception ex)
            {
            }
            if (opeName == "")
            {
                return("通过");
            }
            else
            {
                return(opeName);
            }
        }
示例#2
0
 private int InsertToTable(InstanceData data, WorkItem wi, InstanceLogRule rule)
 {
     try
     {
         AppUtility.Engine.LogWriter.Write("InsertToTable。。。");
         string opename = GetOpeName(data, wi, rule);
         string sql     = "INSERT INTO C_InstanceApprovelLog( WorkItemID ,InstanceID,OpeName ,Activity ,DataField ,CreateTime)VALUES('{0}','{1}','{2}','{3}','{4}','{5}')";
         sql = string.Format(sql, wi.WorkItemID, wi.InstanceId, opename, wi.ActivityCode, rule.DataField, DateTime.Now.ToString());
         int n = AppUtility.Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteNonQuery(sql);
         return(n);
     }
     catch (Exception ex)
     {
         AppUtility.Engine.LogWriter.Write("Insert To C_InstanceApprovelLog Exception:" + ex.ToString());
         return(0);
     }
 }
示例#3
0
        public JsonResult OnRemoved(string id)
        {
            try
            {
                AppUtility.Engine.LogWriter.Write("OnRemoved-->" + id);
                WorkItem WorkItem = AppUtility.Engine.WorkItemManager.GetWorkItem(id);
                if (WorkItem == null)
                {
                    //流程实例删除,会执行到这里
                    int n_del = AppUtility.Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteNonQuery("DELETE FROM OT_WorkItemFinishedDistinct WHERE instanceid='" + id + "'");
                    AppUtility.Engine.LogWriter.Write("OT_WorkItemFinishedDistinct 数据删除(原任务被删除) ObjectID-->" + id + ",受影响行数:" + n_del);
                    return(Json(new { Success = true, Message = "workitemID错误" }, JsonRequestBehavior.AllowGet));
                }

                AppUtility.Engine.LogWriter.Write("EventHandler Remove " + WorkItem.ObjectID + ",State:" + WorkItem.State.ToString() + ",ItemType:" + WorkItem.ItemType.ToString());

                InstanceData data = new InstanceData(AppUtility.Engine, WorkItem.InstanceId, "");

                #region 插入到新的已办任务表中,需要去重:同一个InstanceID,同一个ActivityCode,同一个人只能有一条最新的单据;
                //1.去重
                string str_SQL = "SELECT objectid FROM OT_WorkItemFinishedDistinct WHERE InstanceId='{0}' AND ActivityCode='{1}' AND (Participant='{2}' OR Finisher='{2}')";
                str_SQL = string.Format(str_SQL, WorkItem.InstanceId, WorkItem.ActivityCode, WorkItem.Finisher);
                string obj = AppUtility.Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteScalar(str_SQL) + string.Empty;
                if (!string.IsNullOrEmpty(obj))//有重复的,需要进行删除;
                {
                    int n = AppUtility.Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteNonQuery("DELETE FROM OT_WorkItemFinishedDistinct WHERE objectid='" + obj + "'");
                    AppUtility.Engine.LogWriter.Write("OT_WorkItemFinishedDistinct 重复数据删除 ObjectID-->" + obj + ",受影响行数:" + n);
                }
                //2.插入到Distinct表
                int n_Insert = AppUtility.Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteNonQuery("INSERT INTO OT_WorkItemFinishedDistinct SELECT * FROM OT_WorkItemFinished WHERE ObjectID='" + WorkItem.ObjectID + "'");
                AppUtility.Engine.LogWriter.Write("OT_WorkItemFinishedDistinct Insert ObjectID-->" + WorkItem.ObjectID);
                #endregion

                #region 特定流程插入到流程日志操作表中,记录操作情况;
                if (WorkItem.State == WorkItemState.Finished)
                {
                    try
                    {
                        #region //获取活动节点及字段编码:2018-01-19
                        List <InstanceLogRule> listActivityAndField = new List <InstanceLogRule>();
                        string sql = "SELECT ActivityAndField FROM I_Para_Operation WHERE FlowCode='" + WorkItem.WorkflowCode + "'";
                        string activityAndField = AppUtility.Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteScalar(sql) + string.Empty;
                        if (!string.IsNullOrEmpty(activityAndField.Trim()))
                        {
                            try
                            {
                                var pair = activityAndField.Split('|');
                                foreach (string kv in pair)
                                {
                                    InstanceLogRule rule = new InstanceLogRule();
                                    var             v    = kv.Split(';');
                                    rule.ActivityCode = v[0];
                                    rule.DataField    = v[1];
                                    rule.ValJson      = JsonConvert.DeserializeObject <Dictionary <string, string> >(v[2]);
                                    listActivityAndField.Add(rule);
                                }
                            }
                            catch (Exception ex)
                            {
                                AppUtility.Engine.LogWriter.Write("解析流程操作设置失败:" + ex.ToString());
                            }
                        }
                        #endregion
                        if (listActivityAndField.Count > 0)
                        {
                            #region 插入流程日志的操作名称到数据表
                            foreach (var rule in listActivityAndField)
                            {
                                if (rule.ActivityCode == WorkItem.ActivityCode.ToString())
                                {
                                    AppUtility.Engine.LogWriter.Write("Insert。。。");
                                    InsertToTable(data, WorkItem, rule);
                                }
                            }
                            #endregion
                        }
                    }
                    catch (Exception ex)
                    {
                        AppUtility.Engine.LogWriter.Write("插入到流程日志表异常:" + ex.ToString());
                    }
                }
                #endregion

                if (WorkItem.WorkflowCode == "RetailApp" || WorkItem.WorkflowCode == "CompanyApp" || WorkItem.WorkflowCode == "APPLICATION")
                {
                    //#region 已办任务推送CRM
                    ////if (WorkItem.ActivityCode != "Activity2")
                    ////{
                    ////}
                    //AppUtility.Engine.LogWriter.Write("已办任务推送开始:WorkItemID:" + id);
                    //Dictionary<string, object> dic = new Dictionary<string, object>();
                    //dic.Add("SchemaCode", WorkItem.WorkflowCode + string.Empty);
                    //dic.Add("activity", WorkItem.ActivityCode + string.Empty);
                    //dic.Add("workitemID", id + string.Empty);
                    //BizService.ExecuteBizNonQuery("CRMService", "postFinishedWorkItemInfo", dic);
                    //AppUtility.Engine.LogWriter.Write("已办任务推送结束:WorkItemID:" + id);
                    //#endregion
                }

                #region 推送接口中心,回调信息
                if (WorkItem.WorkflowCode == "APPLICATION")
                {
                    string uuid = data["uuid"].Value + string.Empty;
                    if (!string.IsNullOrEmpty(uuid))
                    {
                        var para = GetApprovalResult(data, WorkItem);
                        if (para != null)
                        {
                            NameValueCollection nvBody = new NameValueCollection();
                            nvBody.Add("Uuid", para.uuid);
                            nvBody.Add("CallbackType", "2");
                            nvBody.Add("CallbackParameters", JsonConvert.SerializeObject(para));

                            AppUtility.Engine.LogWriter.Write("推送消息给接口中心结果[Removed Formdata]:" + HttpHelper.postFormData(ConfigurationManager.AppSettings["apiAddMQMsg"] + string.Empty, new NameValueCollection(), nvBody));
                        }
                    }
                }
                #endregion
            }
            catch (Exception ex)
            {
                AppUtility.Engine.LogWriter.Write("EventHandler Remove Exception-->" + ex.ToString());
            }
            return(Json(new { Success = true, Message = "Success" }, JsonRequestBehavior.AllowGet));
        }