2

私と私のチームは、多くのモジュール (人事、経理など) を備えた ERP システムに取り組んでいます

従業員のような2つのモジュール( HR 、 Accounting )間にいくつかの共有エンティティがあるという私たちが直面している問題

人事システムの従業員には、次のような多くの詳細があります。

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

会計の従業員はほとんど情報を持っていません

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

1)各モジュールがスタンドアロンバージョンとして機能すると仮定します(これで完了です)

2) 2 つのモジュールが連携して動作すると仮定すると、各システムでフローが異なっていても、従業員は両方のモジュールに反映されます。

人事モジュールで新しい従業員を定義して、経理モジュールがその変化を感じられるようにするときに何が必要で、同じエンティティを処理する必要がある両方のモジュールで操作が発生しますか??

この従業員は、彼が関連している会社などの他のエンティティに関連しており、この会社エンティティは両方のモジュールで異なることを考慮してください (たとえば、HR モジュールには多くの詳細がありますが、経理では会社のみがその下にいくつかのブランチを持っています)。 )

注:各モジュールには個別のデータベースがあります (スタンドアロン バージョンでデータベースを拡大したくありませんでした)

両方のモジュールが連携するように開発する正しい方法は何ですか?? またはスタンドアロンとして???

手遅れなので、最初から共有エンティティとして設計する必要がありますか?

また、共有エンティティを使用した場合、共有ビジネス ロジックとデータ アクセス レイヤーを作成する必要がありますか?

私はこれについて多くのことをグーグルで検索しようとしていますが、このような情報は実際の実装と人生経験からのみ得られます

テクノロジー: Asp.net + Mysql

4

2 に答える 2

0

Oracle Apps や SAP などの一般的な ERP ソフトウェアで使用されているモデルを使用してみることができます。
Oracle では、すべてのユーザー情報がベース テーブル (FND_USER) に格納され、他のすべてのモジュールで共有されます。他のモジュールには、ベース テーブルにリンクする追加のテーブルを含めることができます。Oracle Apps では、各モジュールに独自のスキーマがあります

既存の設計では、データベースがサポートしている場合はデータベース リンクを試してから、トリガーを使用してリンクされたテーブルを更新できます。

プログラミングの基本原則である DRY を考慮する場合、情報源は 1 つだけにする必要があります。可能であれば、同期を避けてください。

于 2010-02-18T11:16:11.223 に答える
0

すべてのモジュールをデータベース レベルで結合するという間違いを犯さないでください。

モジュール設計には、オブジェクトとデータの両方を含める必要があります。User オブジェクトは、そのデータを所有する必要があります。アクセスが必要なすべてのクライアントは、それを所有するオブジェクトを通過する必要があります。

サービスの展開方法を決めることなく、サービスをオブジェクトとして考えてください。これをメモリ内オブジェクトにしたい場合があります。SOAP、REST、CORBA、または XML over HTTP を使用してリモート接続することを選択した分散コンポーネントである場合があります。しかし重要なのは、スキーマを共有せずに問題をコンポーネントに分解することです。

これを行うと、クライアントに影響を与えずにスキーマを変更できるようになります。所有者のみが知る必要があります。

クライアントがデータベースに到達した瞬間、それらはすべてデータベース レベルで結合されます。後々の悲しみにつながる可能性があります。

非常に多くの商用システムが利用できるのに、なぜゼロから ERP システムを作成するのでしょうか? それらは高価で複雑ですが、独自に作成することも同様です。トレードオフの議論はどのようなものでしたか?

于 2010-02-28T15:10:47.043 に答える