public void CallCustomFlowTrigger(T_FLOW_CUSTOMFLOWDEFINE define) { string strResult = CallWcf(define);//Call 服务 if (!string.IsNullOrEmpty(strResult))//判断是否返回内容 { try { string NewFormID = string.Empty; DataRow DRNewTrigger = null; DataTable sourceTable = new DataTable(); if (ApplicationValueToDataTable(strResult, ref sourceTable, ref NewFormID, ref DRNewTrigger)) { string strUser = SMT.Workflow.Engine.BLL.Utility.ReceiveUser(define.RECEIVEUSER); TaskCache.TaskCacheReflesh(strUser); EngineServicesDAL dal = new EngineServicesDAL(); dal.SendTriggerMsg(sourceTable, NewFormID, define, strUser);//发送消息 } } catch (Exception ex) { string cMessage = "CallCustomFlowTrigger:" + strResult; Tracer.Debug(cMessage + ex.Message); } } }
/// <summary> /// 发起自定义流程(任务系统) /// </summary> /// <param name="define"></param> public void CallCustomFlowTrigger(T_FLOW_CUSTOMFLOWDEFINE define) { EngineServicesBLL bll = new EngineServicesBLL(); bll.CallCustomFlowTrigger(define); }
private string CallWcf(T_FLOW_CUSTOMFLOWDEFINE define) { string XmlTemplete = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" + "\r\n" + "<Paras>" + "\r\n" + "<Para TableName=\"\" Name=\"OWNERID\" Description=\"strOwnerID\" Value=\"" + define.RECEIVEUSER + "\"></Para>" + "<Para TableName=\"\" Name=\"OWNERDEPARTMENTID\" Description=\"OWNERDEPARTMENTID\" Value=\"" + define.OWNERDEPARTMENTID + "\"></Para>" + "<Para TableName=\"\" Name=\"OWNERPOSTID\" Description=\"strOwnerID\" Value=\"" + define.OWNERPOSTID + "\"></Para>" + "<Para TableName=\"\" Name=\"OWNERCOMPANYID\" Description=\"strOwnerID\" Value=\"" + define.OWNERCOMPANYID + "\"></Para>" + "{0}" + "</Paras>"; string TmpWCFBindingContract = string.Concat(define.WCFBINDINGCONTRACT); string TmpProcessFuncWCFUrl = Config.GetSystemCode(define.SYSTEMCODE) + define.PROCESSWCFURL; string TmpProcessFuncName = define.PROCESSFUNCNAME; string TmpProcessFuncPameter = string.Format(XmlTemplete, define.PROCESSFUNCPAMETER); try { if (!string.IsNullOrEmpty(TmpWCFBindingContract) && !string.IsNullOrEmpty(TmpProcessFuncWCFUrl) && !string.IsNullOrEmpty(TmpProcessFuncName)) { string ErroMesssage = ""; object TmpreceiveString = SMT.Workflow.Engine.BLL.Utility.CallWCFService(TmpWCFBindingContract, TmpProcessFuncWCFUrl, TmpProcessFuncName, TmpProcessFuncPameter, ref ErroMesssage); string cMessage = "执行链接:" + TmpProcessFuncWCFUrl + "\r\n" + "执行方法:" + TmpProcessFuncName + "\r\n" + "绑定契约:" + TmpWCFBindingContract + "\r\n" + "执行参数:" + TmpProcessFuncPameter + "\r\n" + "----------------------------------------------------------"; Tracer.Debug("自定义发起流程Call服务:方法CallWcf()" + cMessage); return TmpreceiveString == null ? string.Empty : TmpreceiveString.ToString(); } } catch (Exception e) { string cMessage = "执行链接:" + TmpProcessFuncWCFUrl + "\r\n" + "执行方法:" + TmpProcessFuncName + "\r\n" + "绑定契约:" + TmpWCFBindingContract + "\r\n" + "执行参数:" + TmpProcessFuncPameter + "\r\n" + "----------------------------------------------------------"; Tracer.Debug("自定义发起流程Call服务异常:方法CallWcf()" + cMessage + e.Message); } return string.Empty; }
/// <summary> /// 自定义发起流程消息 /// </summary> /// <param name="SourceValueDT"></param> /// <param name="ApplicationCode"></param> /// <param name="define"></param> public void SendTriggerMsg(DataTable SourceValueDT, string ApplicationCode, T_FLOW_CUSTOMFLOWDEFINE define, string strUser) { try { if (!string.IsNullOrEmpty(strUser)) { string sql = "UPDATE T_WF_DOTASK SET DOTASKSTATUS=1, CLOSEDDATE=to_date('" + DateTime.Now.ToString("yyyy/MM/dd hh:mm") + ",REMARK='关闭待办(自定义发起流程)' WHERE SYSTEMCODE='" + define.SYSTEMCODE + "' AND DOTASKSTATUS=0 AND ORDERID='" + ApplicationCode + "'"; dao.Open(); int result = dao.ExecuteNonQuery(sql); string addsql = @"INSERT INTO T_WF_DOTASK(DOTASKID,COMPANYID,ORDERID,MESSAGEBODY,APPLICATIONURL,RECEIVEUSERID,BEFOREPROCESSDATE,DOTASKTYPE, ENGINECODE,DOTASKSTATUS,MAILSTATUS,RTXSTATUS,APPFIELDVALUE,FLOWXML,APPXML,SYSTEMCODE,MODELCODE,MODELNAME,REMARK) ) VALUES ('" + Guid.NewGuid().ToString() + "',"; addsql += "'','" + ApplicationCode + "',"; string XmlTemplete = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" + "\r\n" + "<System>" + "\r\n" + "{0}" + "</System>"; if (string.IsNullOrEmpty(define.MESSAGEBODY)) { addsql += "'" + ApplicationCode + "'已审批通过,"; addsql += "'" + string.Format(XmlTemplete, porcessValue(define.MSGLINKURL, SourceValueDT)) + "',"; } else//在引擎配置界面定义了消息内容 { addsql += "'" + ReplaceMessageBody(define.MESSAGEBODY, SourceValueDT) + "'"; addsql += "'" + string.Format(XmlTemplete, porcessValue(define.MSGLINKURL, SourceValueDT)) + "',"; } addsql += "'','" + strUser + "',to_date('" + DateTime.Now.AddDays(3).ToString("yyyy/MM/dd") + "','YYYY-MM-DD'),0,'',0,0,0,"; addsql += "'','','','" + define.SYSTEMCODE + "','" + define.MODELCODE + "','" + define.MODELNAME + "','自发流程')"; LogHelper.WriteLog("SendTriggerMsg()SQL语句:\r\n" + addsql); result = dao.ExecuteNonQuery(addsql); } } catch (Exception ex) { LogHelper.WriteLog(this, "SendTriggerMsg()", "自定义发起流程消息", ex); } finally { dao.Close(); } }