【问题标题】:Integration between 2 modules in ERP systemERP系统中2个模块之间的集成
【发布时间】:2010-02-18 11:05:15
【问题描述】:

我和我的团队正在开发一个包含许多模块(人力资源、会计等)的 ERP 系统

我们面临的问题是两个模块(人力资源、会计)之间存在一些共享实体,比如员工

人力资源系统中的员工有很多细节,例如:

Personal Information , Visa Info , Report To  , Sources , Training , Etc 

会计员工的信息很少

Personal Information , Bank Account , Employee Account (That's it )

1)假设每个模块都将作为独立版本工作(此完成)

2)假设两个模块一起工作,这意味着员工将反映在两个模块中,即使他们在每个系统中有不同的流程

当我在 HR 模块中定义一个新员工时,我需要什么让会计模块感受到变化以及两个模块中发生的任何操作,它们必须处理同一个实体??

考虑到该员工与其他实体有关,例如与他相关的公司,并且该公司实体在两个模块中都不同(例如,它在 HR 模块中有很多细节,但在会计中只有公司有一些它下面的分支)

注意:每个模块都有单独的数据库(不想在独立版本中扩大数据库)

开发两个模块以协同工作的正确方法是什么?还是作为独立的???

是不是太晚了,我们应该从一开始就将它设计为共享实体?

如果我使用共享实体意味着我应该共享业务逻辑和数据访问层?

我尝试在谷歌上搜索很多关于此的信息,但此类信息仅来自实际实施和生活经验

技术: Asp.net + Mysql

【问题讨论】:

    标签: integration erp


    【解决方案1】:

    您可以尝试使用 Oracle Apps 或 SAP 等流行 ERP 软件使用的模型。
    在 Oracle 中,所有用户信息都存储在基表 (FND_USER) 中并由所有其他模块共享。其他模块可以有额外的表链接到基表。在 Oracle Apps 中,每个模块都有自己的架构

    在您现有的设计中,如果您的数据库支持,您可以尝试使用数据库链接,然后使用触发器来更新您的链接表。

    如果您考虑编程的基本原则 - DRY,那么您应该只有一个信息来源。尽量避免同步。

    【讨论】:

    • 但在这种情况下,如果应用程序作为独立应用程序运行,它将崩溃,因为它找不到链接到的表
    • 按照我的建议,如果你不想改变现有的设计,那么你需要同步两个表。
    【解决方案2】:

    不要犯在数据库级别耦合所有模块的错误。

    您的模块化设计应该包括对象和数据。一个用户对象应该拥有它的数据。所有需要访问它的客户端都应该通过拥有它的对象。

    将服务视为对象,而无需决定如何部署它们。您可能希望这是一个内存对象;它可能是您选择远程使用 SOAP 或 REST 或 CORBA 或 XML over HTTP 的分布式组件。但重点是 在不共享架构的情况下将问题分解为组件。

    如果您这样做,就可以在不影响客户端的情况下更改架构。只有主人需要知道。

    当您有客户端访问数据库时,它们都在数据库级别耦合。这可能会导致日后的悲伤。

    只是好奇 - 既然有这么多商业系统可用,您为什么要从头开始编写 ERP 系统?它们既昂贵又复杂,但自己编写也是如此。权衡的讨论是什么样的?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-07
      • 1970-01-01
      相关资源
      最近更新 更多