向泛微OA系统推送消息

以下操作案例中关于第三方系统向泛微OA系统的移动端和电脑端版本推送消息说明:

  •  移动端使用的是泛微系统登录账号(工号)来最终实现消息的推送

  •  电脑端使用的是泛微系统用户表中的id字段来最终实现消息的推送

 

一、移动端消息推送

1、超级管理员账号,登录移动端门户管理平台

 第三方系统向泛微OA系统推送消息_第1张图片

 

2、消息中心--消息类型创建

 第三方系统向泛微OA系统推送消息_第2张图片

  • 配置完成后,会自动生成消息标识Id;然后根据外部系统推送示例,实现移动端消息推送。

  • 实现移动端消息推送,必须要消息标识Id和e-mobile消息推送密钥

    消息标识Id:新建消息类型成功后,会自动生成消息标识Id

    消息推送密钥:“服务器管理”—“系统状态”—服务器属性:e-mobile消息推送密钥

    第三方系统向泛微OA系统推送消息_第3张图片

  • 请勿必保证license值是有效可用的,否则会导致调用接口失败

  • 以上都配置完成后,修改调用程序中对应的相关参数,可能首次调用接口无法接收到消息,请先多次调用后。

 

二、电脑端消息推送

1、超级管理员账号,登录协同办公平台

   第三方系统向泛微OA系统推送消息_第4张图片

 

2、后端应用中心

  页面右上角更多,点击 后端应用中心

   

 

3、配置允许调用工作流程WebService服务权限的IP地址

  • 页面地址为:/workflow/UserList.jsp

   第三方系统向泛微OA系统推送消息_第5张图片

 

4、配置允许调用人力资源WebService服务权限的IP地址

  • 需要在OA的/Ecology/WEB-INF/prop/HrmWebserviceIP.properties配置文件中配置调用接口客户端的IP,调用接口时传入的参数ip包涵在此配置文件才能调用人力资源WebService服务的所有接口。

 

5、流程引擎--表单管理--表单管理,创建自定义表单

  • 点击“新建”按纽,弹出新建表单模态窗,填写“表单名称”,最后点击“保存”按纽。

   第三方系统向泛微OA系统推送消息_第6张图片

 

  • “批量删除”按纽旁边文本框中输入填写的表单名称,点击搜索,查询添加的表单,然后编辑该表单

   第三方系统向泛微OA系统推送消息_第7张图片

 

  • 维护表单相关字段信息

   第三方系统向泛微OA系统推送消息_第8张图片

   第三方系统向泛微OA系统推送消息_第9张图片

 

6、流程引擎—路径管理—路径设置,创建流程

  • 选择流程放在哪个路径目录下,然后点击目录文件夹,再点击“添加”按纽,填写路径流程信息

   第三方系统向泛微OA系统推送消息_第10张图片

 

  • 基础设置--基本信息,只需要填写“路径名称”、“对应表单”2个字段,其它可以不添加或修改

   第三方系统向泛微OA系统推送消息_第11张图片

 

  • 流转设置--节点信息,--编辑,添加流程节点,只需要添加“创建“、“归档“ 2 个节点

   第三方系统向泛微OA系统推送消息_第12张图片

 

  • 给节点,添加操作者,如下图所示

   第三方系统向泛微OA系统推送消息_第13张图片

  第三方系统向泛微OA系统推送消息_第14张图片

 

  • 给节点,设置表单内容,如下图所示

   第三方系统向泛微OA系统推送消息_第15张图片

 

  • 流转设置--出口信息,添加出口信息即流程结束节点,如下图所示

   第三方系统向泛微OA系统推送消息_第16张图片

 

7、查看流程Id(非常重要)

  • 调用创建流程接口时,需要使用流程Id(workflowId)
  • 调用创建流程接口时,需要创建人Id(creatorId),该值对应的是泛微OA系统用户表中的用户Id

   第三方系统向泛微OA系统推送消息_第17张图片

 

8、门户--个人办公,配置消息显示

 第三方系统向泛微OA系统推送消息_第18张图片

 第三方系统向泛微OA系统推送消息_第19张图片

 第三方系统向泛微OA系统推送消息_第20张图片

 第三方系统向泛微OA系统推送消息_第21张图片

 

附.net代码

ContractedBlock.gif ExpandedBlockStart.gif
 ///  /// 调用泛微OA系统接口 ///  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"];  ///   /// 向泛微移动端推送消息  ///   /// 消息    /// 接收者的loginid,多用户使用英文半角逗号分开  ///   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 para = new Dictionary();    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> paramList = new List>();    paramList.Add(new KeyValuePair("userid", receiverId));    paramList.Add(new KeyValuePair("msg", message));    paramList.Add(new KeyValuePair("badge", badge));    paramList.Add(new KeyValuePair("para", paraJson));    paramList.Add(new KeyValuePair("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}");   }  }  ///   /// 向泛微电脑端推送消息  ///   /// 消息标题  /// 消息接收人  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}");   }  }  ///   /// 根据工号获取泛微用户信息  ///   /// 工号  ///   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 result"", "", "", "", "");    log.Info("调用泛微OA人力资源getHrmUserInfo" + resultif (string.IsNullOrWhiteSpace(result|| result"")    {     return ecologyUser;    }    //    List userBeanList = Sheng.Kernal.JsonHelper."UserBean-array");    if (userBeanList.Any() == false)    {     return ecologyUser;    }    ecologyUser = userBeanList.FirstOrDefault(x => x.WorkCode == workCode);   }   catch (Exception ex)   {    log.Error("调用泛微OA人力资源getHrmUserInfo" + 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

 

第三方系统向泛微OA系统推送消息
文章转载:http://www.shaoqun.com/a/464378.html