本文将要为您介绍的是第三方系统向泛微OA系统推送消息,具体完成步骤:向泛微OA系统推送消息

以下操作案例中关于第三方系统向泛微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代码

///

/// 调用泛微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 resultXml = hrmService.getHrmUserInfoXML(hrmIpAddress, "", "", "", "", "");

log.Info("调用泛微OA人力资源getHrmUserInfoXML接口,接口返回数据:" + resultXml);

if (string.IsNullOrWhiteSpace(resultXml)

|| resultXml == "")

{

return ecologyUser;

}

//xml转成List

List userBeanList = Sheng.Kernal.JsonHelper.XmlToList(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

第三方系统向泛微OA系统推送消息就为您介绍到这里,感谢您关注懒咪学编程c.lanmit.com.

本文地址:https://c.lanmit.com/bianchengkaifa/net/101281.html

泛微oa java .net_第三方系统向泛微OA系统推送消息相关推荐

  1. java友盟自定义行为_实现友盟推送消息的完全自定义处理

    1,下面的前提是必须申请了友盟且有app key 3,若开发者需要实现对消息的完全自定义处理,则可以继承 UmengBaseIntentService, 实现自己的Service来完全控制达到消息的处 ...

  2. 极光推送:java后台向APP推送消息(android,ios极光推送消息)

    Maven添加依赖 <!--极光推送--><dependency><groupId>cn.jpush.api</groupId><artifact ...

  3. 泛微 消息服务器,第三方系统向泛微OA系统推送消息

    向泛微OA系统推送消息 以下操作案例中关于第三方系统向泛微OA系统的移动端和电脑端版本推送消息说明: •  移动端使用的是泛微系统登录账号(工号)来最终实现消息的推送 •  电脑端使用的是泛微系统用户 ...

  4. Android高效率编码-第三方SDK详解系列(三)——JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送

    Android高效率编码-第三方SDK详解系列(三)--JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送 很久没有更新第三方SDK这个系列了,所以更新一下这几天工作中使用到的推送, ...

  5. 第三方MiPush框架上线:既保证推送,又无需应用挂后台

    开发者Trumeet在GitHuib上线了MiPushFramework项目,该项目可以实现在任何非MIUI的安卓设备上体验小米系统级推送. 第三方MiPush框架上线:既保证推送,又无需应用挂后台 ...

  6. java 通过企业微信推送消息

    首先我们要知道企业微信推送消息的步骤,企业微信官方提供了多个API供我们调用,这里我们只讲我们需要的API: 企业微信的官方开放的API地址:https://work.weixin.qq.com/ap ...

  7. Java 服务端推送消息有那么难吗?

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 转自公众号:码农小胖哥 今天项目经理交给我一个开发任务.如果有人在前台下了订单就给后台仓库管 ...

  8. java消息推送怎么实现_调用钉钉接口实现机器人推送消息

    一.摘要 现实交易中为了能及时了解发明者量化机器人交易状态,有时候我们需要将机器人所执行的交易结果发送到微信.邮箱.短信等等.但每天上百条各种各样的信息,使得对这些信息已经不敏感,导致重要的信息不能及 ...

  9. Websocket实现Java后台主动推送消息到前台

    写在前面 需求: 项目测试, 缺少用户登录失败给admin推送消息, 想到这个方式, 当用户登录失败时, admin用户会在页面看到咣咣乱弹的alert. 正文 pom.xml <!-- web ...

  10. Android实战——第三方服务之Bmob后端云的推送服务的集成和使用(三)

    第三方服务之Bmob后端云的推送服务的集成和使用(三) 事先说明:这里的一切操作都是在集成了BmobSDK之后实现的,如果对Bmob还不了解的话,请关注我第一篇Bmob文章 步骤一:推送服务的集成 在 ...

最新文章

  1. plantuml 依赖_使用PlantUML绘制类图
  2. [转]REMOTE_ADDR,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR
  3. 解决安装centos 7后Windows启动项丢失
  4. SAP UI5库文件的加载细节探讨
  5. java 常量 内存分配_Java内存分配之堆、栈和常量池
  6. 教程:编写自己的CDI扩展
  7. php 64位编码解码,php base64 编码和解码
  8. flyway版本号_Spring Boot 集成 Flyway 实现数据库版本控制
  9. 计算机毕业设计——选题参考
  10. 视频联网云平台EasyCVR集成海康EHome协议系列——配置及协议介绍
  11. uniapp 微信小程序修改BarTitle
  12. 一文解读广告投放落地页
  13. Monitor监控系统
  14. 计算方法 7.数值积分计算方法
  15. oracle form set_block_property,ORACLEERP开发基础之OracleForms基础(二)
  16. 后台页面-制作铃铛带数字消息提示样式
  17. nested exception is java.lang.IllegalArgumentException: Unsupported class file major version 61
  18. 激光旋律(Laser melody)
  19. IDEA + Tomcat + war 包部署 [ 如果看别的教程不行请看这个里 ]
  20. C# 获取鼠标选中的文字(屏幕取词)

热门文章

  1. three.js 文本_使用Three-bmfont-text在Three.js中创建文本
  2. 知识图谱嵌入:TransE算法原理及代码详解
  3. itlwm驱动_黑苹果系统 macOS 驱动英特尔无线网卡的小教程
  4. FL Studio20中文高级版免费下载解锁教程
  5. 2021年中国无线通信模组企业排名
  6. 泰拉瑞亚tModLoader 模组浏览器离线解决方法
  7. 给产品经理讲技术:微信的openid和unionid
  8. UE4.26官方文档网页浏览录屏打包下载版
  9. 虎头少保,天下第一手孙禄堂【转】
  10. 数字图像处理(21): 图像金字塔(高斯金字塔 与 拉普拉斯金字塔)