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