OA系统与ERP系统进行整合打通,实现数据对接

随着企业发展,企业仅仅布置一套系统的可能性越来越小。企业内部OA办公系统、CRM、ERP等全面开花也不乏少见。各个系统之间各自工作,系统内部数据不能互通互联,信息孤岛形成,信息资源没有有效地利用,人力成本支出巨大。面临这种情况,系统之间的融合、数据互联成为各个系统厂商的努力方向。

但实质上从为了能够有效支撑组织内部管理来看,核心的信息化系统就可直接分为协同OA和ERP类业务系统,着“财”、另一部分是从制造业的生产计划出身则围绕着“物”,关注财和物的结果处理,所以这两大块信息化系统,一方面是围绕着管理的对象有所不同,另外一方面是处理的模式不同,一是过程管控为主,一是结果呈现为主。

目前大部分是采用在技术层面的集成对接方式来满足。针对这些不同类型的业务系统与协同办公OA软件之间分别有什么关系以及如何能够很好的融合分别进行介绍。

ERP是什么?

ERP主要是围绕着生产管理的计划以及生产所需要的物料的管理,着重于企业业务数据的处理、分析和挖掘。侧重于审批工作流的实现,具有强大的工作流定制功能,企业内部资源之间数据流关系。是挖掘企业内部业务数据的高手。

OA是什么?

OA系统在企业信息系统中一般起着一个“地基”的作用,实现的是企业最基本的办公功能,它通常被定位为企业信息化建设中的基础工程。

OA与ERP整合打通的优势

1.OA是以人的过程管理,在OA与ERP之间可以进行很多应用的集成对接,可以进行许多的集成互补,即ERP解决对物料及生产的结果处理、OA解决在其过程中所需要内部进行确认和审批的事宜。

2.OA管理系统侧重于审批工作流的实现,具有强大的工作流定制功能,

ERP系统则侧重于企业内部资源之间数据流关系。是挖掘企业内部业务数据的高手。他们的集成应用如果实现恰当的话,不仅能提升企业工作效率,简化对特定数据的提取、导出、导入以及操作,还能在费用管控与核销方面也能让用户大大受益。

OA 集成 ERP

1. 流程让数据无缝对接:

通过与 ERP 集成,将 OA 强大的流程管理功能和 ERP 天然数据库相结合,从 OA 发起流程,基础数据从ERP 中自动提取,审批结果及时回传到 ERP,确保信息准确性。

2.让流程集成整合协同优势

流程管理是 ERP 软件最为薄弱的环节,因此不少使用 ERP 系统的公司有很多表单不得不沿用纸质来传递和审批。ERP 的流程更多的是状态的阶段记录,其流程实现受到单向通过性、复核性弱、信息难以共享等因素的影响,难以满足企业中多变的流程应用需求,比如背靠背审批、顺序会签等等。而通过 OA 流程管理与 ERP 进行整合应用,以 OA 强大灵活的流程处理能力弥补 ERP 在流程管理上的不足,足以促进流程顺畅化、一体化,全面实现电子化办公。

3.审批全部流程化,让业务过程透明

该公司集科研生产、物料采购、配送服务于一体,在信息化建设上,希望在一个平台上就能完成生产及销售业务的市场开发、项目统筹、项目过程和项目指标数据的一体化统一管控。

企业可以使用下秒数据,通过将OA系统和 ERP 集成,两大系统流程全面打通,在流程化的业务审批环境下让所有与业务相关的订货、销售等数据信息一一记录、共享。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对接致远OA单点登录,需要实现以下步骤: 1. 在致远OA系统中,配置单点登录参数,包括应用系统的名称、登录地址、退出地址等信息,并生成密钥和向量。 2. 在应用系统中,使用C#语言实现单点登录的逻辑,包括接收和解析来自致远OA系统的加密字符串、校验签名、验证时间戳等操作。 以下是一个简单的示例代码,用于演示如何实现对接致远OA单点登录: ```csharp using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Security.Cryptography; using System.Text; public partial class SsoLogin : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // 从请求参数中获取加密字符串 string encryptData = Request.QueryString["data"]; // 解密字符串 string decryptedData = Decrypt(encryptData); // 解析字符串 Dictionary<string, string> dataDict = ParseData(decryptedData); // 校验签名 if (!VerifySignature(dataDict)) { Response.Write("Invalid signature"); return; } // 验证时间戳 if (!VerifyTimestamp(dataDict)) { Response.Write("Invalid timestamp"); return; } // 获取用户名和用户ID string username = dataDict["username"]; string userId = dataDict["userid"]; // 在应用系统进行单点登录 // ... // 跳转到应用系统的首页 Response.Redirect("home.aspx"); } // 解密方法 private string Decrypt(string encryptData) { // 根据实际情况,使用致远OA系统中生成的密钥和向量进行解密 byte[] key = Encoding.ASCII.GetBytes("1234567890123456"); byte[] iv = Encoding.ASCII.GetBytes("abcdefghijklmnop"); byte[] encryptedBytes = Convert.FromBase64String(encryptData); string decryptedData = ""; using (AesCryptoServiceProvider aes = new AesCryptoServiceProvider()) { aes.Key = key; aes.IV = iv; ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV); using (MemoryStream ms = new MemoryStream(encryptedBytes)) { using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read)) { using (StreamReader sr = new StreamReader(cs)) { decryptedData = sr.ReadToEnd(); } } } } return decryptedData; } // 解析数据方法 private Dictionary<string, string> ParseData(string decryptedData) { Dictionary<string, string> dataDict = new Dictionary<string, string>(); string[] dataArray = decryptedData.Split('&'); foreach (string data in dataArray) { string[] keyValue = data.Split('='); dataDict[keyValue[0]] = keyValue[1]; } return dataDict; } // 校验签名方法 private bool VerifySignature(Dictionary<string, string> dataDict) { // 根据实际情况,使用致远OA系统中生成的密钥和向量进行签名校验 string key = "1234567890123456"; string iv = "abcdefghijklmnop"; string data = dataDict["data"]; string signature = dataDict["signature"]; byte[] keyBytes = Encoding.ASCII.GetBytes(key); byte[] ivBytes = Encoding.ASCII.GetBytes(iv); byte[] dataBytes = Encoding.ASCII.GetBytes(data); using (AesCryptoServiceProvider aes = new AesCryptoServiceProvider()) { aes.Key = keyBytes; aes.IV = ivBytes; ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV); using (MemoryStream ms = new MemoryStream(dataBytes)) { using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read)) { using (StreamReader sr = new StreamReader(cs)) { string decryptedData = sr.ReadToEnd(); string computedSignature = ComputeSignature(decryptedData, key); return signature.Equals(computedSignature); } } } } } // 计算签名方法 private string ComputeSignature(string decryptedData, string key) { byte[] keyBytes = Encoding.ASCII.GetBytes(key); byte[] dataBytes = Encoding.ASCII.GetBytes(decryptedData); HMACSHA1 hmac = new HMACSHA1(keyBytes); byte[] signatureBytes = hmac.ComputeHash(dataBytes); return Convert.ToBase64String(signatureBytes); } // 验证时间戳方法 private bool VerifyTimestamp(Dictionary<string, string> dataDict) { // 根据实际情况,可以设置一个有效时间段,超过该时间段的请求将被视为无效 string timestamp = dataDict["timestamp"]; DateTime dateTime = DateTime.ParseExact(timestamp, "yyyyMMddHHmmss", null); TimeSpan timeSpan = DateTime.Now - dateTime; return timeSpan.TotalMinutes <= 5; } } ``` 以上代码仅作为参考,实际对接过程中需要根据具体情况进行修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值