以下操作案例中關于第三方系統向泛微OA系統的移動端和電腦端版本推送訊息說明:
• 移動端使用的是泛微系統登錄賬號(工號)來最終實作訊息的推送
• 電腦端使用的是泛微系統用戶表中的id欄位來最終實作訊息的推送
一、移動端訊息推送
1、超級管理員賬號,登錄移動端門戶管理平臺

2、訊息中心--訊息型別創建

-
配置完成后,會自動生成訊息標識Id;然后根據外部系統推送示例,實作移動端訊息推送,
-
實作移動端訊息推送,必須要訊息標識Id和e-mobile訊息推送密鑰
訊息標識Id:新建訊息型別成功后,會自動生成訊息標識Id
訊息推送密鑰:“服務器管理”—“系統狀態”—服務器屬性:e-mobile訊息推送密鑰

-
請勿必保證license值是有效可用的,否則會導致呼叫介面失敗
-
以上都配置完成后,修改呼叫程式中對應的相關引數,可能首次呼叫介面無法接收到訊息,請先多次呼叫后,
二、電腦端訊息推送
1、超級管理員賬號,登錄協同辦公平臺

2、后端應用中心
頁面右上角
更多,點擊 后端應用中心

3、配置允許呼叫作業流程WebService服務權限的IP地址
- 頁面地址為:/workflow/UserList.jsp

4、配置允許呼叫人力資源WebService服務權限的IP地址
-
需要在OA的/Ecology/WEB-INF/prop/HrmWebserviceIP.properties組態檔中配置呼叫介面客戶端的IP,呼叫介面時傳入的引數ip包涵在此組態檔才能呼叫人力資源WebService服務的所有介面,
5、流程引擎--表單管理--表單管理,創建自定義表單
- 點擊“新建”按紐,彈出新建表單模態窗,填寫“表單名稱”,最后點擊“保存”按紐,

- “批量洗掉”按紐旁邊文本框中輸入填寫的表單名稱,點擊搜索,查詢添加的表單,然后編輯該表單

- 維護表單相關欄位資訊


6、流程引擎—路徑管理—路徑設定,創建流程
- 選擇流程放在哪個路徑目錄下,然后點擊目錄檔案夾,再點擊“添加”按紐,填寫路徑流程資訊

- 基礎設定--基本資訊,只需要填寫“路徑名稱”、“對應表單”2個欄位,其它可以不添加或修改

- 流轉設定--節點資訊,--編輯,添加流程節點,只需要添加“創建“、“歸檔“ 2 個節點

- 給節點,添加操作者,如下圖所示


- 給節點,設定表單內容,如下圖所示

- 流轉設定--出口資訊,添加出口資訊即流程結束節點,如下圖所示

7、查看流程Id(非常重要)
- 呼叫創建流程介面時,需要使用流程Id(workflowId)
- 呼叫創建流程介面時,需要創建人Id(creatorId),該值對應的是泛微OA系統用戶表中的用戶Id

8、門戶--個人辦公,配置訊息顯示




附.net代碼
/// <summary> /// 呼叫泛微OA系統介面 /// </summary> public class EcologyManager { ILog log = log4net.LogManager.GetLogger("EcologyManager"); static String basePushUrl = ConfigurationManager.AppSettings["EcologyMobilePushUrl"]; static String key = ConfigurationManager.AppSettings["EcologyMobilePushKey"];//emobile后臺的推送秘鑰 static String messageUrl = ConfigurationManager.AppSettings["EcologyMobileMessageUrl"]; static String messageTypeId = ConfigurationManager.AppSettings["EcologyMobileMessageTypeId"]; static String workflowServiceUrl = ConfigurationManager.AppSettings["EcologyWorkflowServiceUrl"]; static String hrmServiceUrl = ConfigurationManager.AppSettings["EcologyHrmServiceUrl"]; static String workflowId = ConfigurationManager.AppSettings["EcologyWorkflowId"]; static String workflowLevel = ConfigurationManager.AppSettings["EcologyWorkflowLevel"]; static String hrmIpAddress = ConfigurationManager.AppSettings["EcologyHrmIpAddress"]; /// <summary> /// 向泛微移動端推送訊息 /// </summary> /// <param name="message">訊息</param> /// <param name="receiverId">接收者的loginid,多用戶使用英文半角逗號分開</param> /// <returns></returns> public void PushMobileMessage(string message, string receiverId) { try { //url = url ?? messageUrl + "?account=" + receiverId; string badge = "1"; //訊息數量+1 HttpClient httpClient = new HttpClient(); httpClient.DefaultRequestHeaders.Add("user-agent", "Mozilla/5.0 (Windows NT 6.1; rv:8.0.1) Gecko/20100101 Firefox/8.0.1"); Dictionary<string, string> para = new Dictionary<string, string>(); para.Add("messagetypeid", messageTypeId);//在mobile后臺注冊的訊息型別id para.Add("module", "-2"); //標示屬于自定義訊息 para.Add("url", messageUrl); string paraJson = Sheng.Kernal.JsonHelper.Serializer(para); StringBuilder sendMsg = new StringBuilder(); if (message.Length > 100) message = message.Substring(0, 100) + "..."; sendMsg.Append(receiverId); sendMsg.Append(message); sendMsg.Append(badge); sendMsg.Append(paraJson); sendMsg.Append(key); string hash = Md5Hex(sendMsg.ToString()); List<KeyValuePair<String, String>> paramList = new List<KeyValuePair<String, String>>(); paramList.Add(new KeyValuePair<string, string>("userid", receiverId)); paramList.Add(new KeyValuePair<string, string>("msg", message)); paramList.Add(new KeyValuePair<string, string>("badge", badge)); paramList.Add(new KeyValuePair<string, string>("para", paraJson)); paramList.Add(new KeyValuePair<string, string>("hash", hash)); HttpResponseMessage response = httpClient.PostAsync(new Uri(basePushUrl), new FormUrlEncodedContent(paramList)).Result; log.Info($"Ecology移動端訊息推送:{Environment.NewLine}用戶工號:{receiverId },訊息內容:{message };{Environment.NewLine}介面回應結果:{Sheng.Kernal.JsonHelper.Serializer(response)}"); } catch (Exception ex) { log.Error($"Ecology移動端訊息推送:{Environment.NewLine}用戶工號:{receiverId },訊息內容:{message };{Environment.NewLine}介面例外,例外資訊:{ex.Message},例外堆疊資訊:{ex.StackTrace}"); } } /// <summary> /// 向泛微電腦端推送訊息 /// </summary> /// <param name="title">訊息標題</param> /// <param name="ecoloryUserId">訊息接收人</param> public void PushPCMessage(string title, int ecoloryUserId) { try { //主欄位 WorkflowRequestTableField[] wrti = new WorkflowRequestTableField[1]; //欄位資訊 wrti[0] = new WorkflowRequestTableField(); WorkflowRequestTableRecord[] wrtri = new WorkflowRequestTableRecord[1];//主欄位只有一行資料 wrtri[0] = new WorkflowRequestTableRecord(); wrtri[0].workflowRequestTableFields = wrti; WorkflowMainTableInfo wmi = new WorkflowMainTableInfo(); wmi.requestRecords = wrtri; WorkflowBaseInfo wbi = new WorkflowBaseInfo(); wbi.workflowId = workflowId; WorkflowRequestInfo wri = new WorkflowRequestInfo();//流程基本資訊 wri.creatorId = ecoloryUserId.ToString();//接收人 wri.requestLevel = workflowLevel; //0 正常,1重要,2緊急 wri.requestName = title;//流程標題 wri.workflowMainTableInfo = wmi;//添加主欄位資料 wri.workflowBaseInfo = wbi; //執行創建流程介面 WorkflowService workflowService = new WorkflowService(); workflowService.Url = workflowServiceUrl; String requestid = workflowService.doCreateWorkflowRequest(wri, ecoloryUserId);//接收人 log.Info($"Ecology電腦端訊息推送;{Environment.NewLine}泛微USERID:{ecoloryUserId },訊息內容:{title }{Environment.NewLine}介面回應結果:{requestid}"); } catch (Exception ex) { log.Error($"Ecology電腦端訊息推送;{Environment.NewLine}泛微USERID:{ecoloryUserId },訊息內容:{title }{Environment.NewLine}介面例外,例外資訊:{ex.Message},例外堆疊資訊:{ex.StackTrace}"); } } /// <summary> /// 根據工號獲取泛微用戶資訊 /// </summary> /// <param name="workCode">工號</param> /// <returns></returns> public EcologyUser GetEcologyUserByWorkCode(string workCode) { EcologyUser ecologyUser = new EcologyUser(); try { //呼叫泛微OA系統人力資源介面 //需要在泛微OA系統的安裝目錄 /Ecology/WEB-INF/prop/HrmWebserviceIP.properties 組態檔中配置呼叫介面客戶端的IP(=hrmIpAddress),否則無法呼叫人力資源相關介面 HrmService hrmService = new HrmService(); hrmService.Url = hrmServiceUrl; //獲取泛微所有用戶 string resultXml = hrmService.getHrmUserInfoXML(hrmIpAddress, "", "", "", "", ""); log.Info("呼叫泛微OA人力資源getHrmUserInfoXML介面,介面回傳資料:" + resultXml); if (string.IsNullOrWhiteSpace(resultXml) || resultXml == "<UserBean-array/>") { return ecologyUser; } //xml轉成List List<EcologyUser> userBeanList = Sheng.Kernal.JsonHelper.XmlToList<EcologyUser>(resultXml, "UserBean-array"); if (userBeanList.Any() == false) { return ecologyUser; } ecologyUser = userBeanList.FirstOrDefault(x => x.WorkCode == workCode); } catch (Exception ex) { log.Error("呼叫泛微OA人力資源getHrmUserInfoXML介面例外,例外資訊:" + ex.Message + Environment.NewLine + ex.StackTrace); } return ecologyUser; } private static string Md5Hex(string data) { MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); byte[] dataHash = md5.ComputeHash(Encoding.UTF8.GetBytes(data)); StringBuilder sb = new StringBuilder(); foreach (byte b in dataHash) { sb.Append(b.ToString("x2").ToLower()); } return sb.ToString(); } }View Code
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/1597.html
標籤:ASP.NET
