幸いなことに、ここで直面している問題は固有のものではありません。
ここで問題となるのは、コードそのものや分解方法ではなく、ERP の設計と開発に取り掛かっていることを理解することです。
この組織の詳細を論理的な方法で管理する ERP を開発および成長させる最善の方法を知ることは、あなたが理解しようとしている、より深い問題だと思います。このフローからコーディングする方法の設計とアーキテクチャ自体は、必要なコア機能領域の理解から始まります。
幸いなことに、入手できる既存の ERP システムをいくつか調査して、それらがいくつかの問題にどのように取り組んだかを確認できます。いくつかの優れたオープン ソース ERP があります。このヒントを思いついたのは、私が監督した SAP Business One (大規模な SAP の課題を回避する中小規模の ERP) のフル サイクル インストールです。
あなたが探しているのは、あなたが直面しているのと同じ ERP アーキテクチャを他の人がどのように解決しているかを見ることです。少なくとも、モジュール化の間のトレードオフ、モジュール間の線引きの場所、およびその理由について理解することができます。
通常、ERP システムは、見積もりから生産 (必要な場合)、請求、出荷、および結果として生じる経理作業まで、すべてを処理します。
ERPS は、次の 2 つの主要な世界を処理します。
- 商品の生産
- サービスの提供
一部のビジネスはウィジェット ファクトリーであり、他のビジネスはサービス ビジネスです。すぐに使用できるフル機能の ERP には、「注文」の 1 つの連続したチェーン/ライフサイクルがあり、多くのステップで処理されます。
ERP がカバーできる手順の大まかなリストを読むと、自分に当てはまる手順がわかります。これらはおそらく、あなたが持っているか、アプリを分割する必要があるモジュールです。それぞれが異なるドキュメントであり、すべてがチェーン内の前のドキュメントに接続されている次のステップを想像してください。
- リードジェネレーション --> 販売機会
- 販売機会 --> 見積もり/見積り
- 見積もり見積もり --> 受注
- 販売注文 --> 製造注文 (作成するか、作業を行う人をスケジュールします)
- 製造オーダー --> 発注書 (必要な材料を注文するか、必要なときに専門家が到着するようにします)
- 製造オーダー --> 製造スケジュール (いつ、何を製造するか、またはいつ誰が製造するか?)
- 制作スケジュール→制作!(仕事をする)
- 生産されたサービス/商品 --> 在庫調整 - 必要に応じて未加工の在庫を完成品に変換するか、出荷の準備をします
- 完成品/サービス --> 納品書
- 納品書項目 --> 請求書
システム インテグレーターの出番は、必要な手順を使用し、使用されていない手順をスキップすることです。これは、成長中のアプリに 1 つのことをもたらします。
堅実なデータ セキュリティ戦略を策定します。誰もが見るべきものだけを見ることができるように、快適であることを確認してください。それが整っていると仮定すると、アプリを主要なセクションに分割することをお勧めします。モジュールは私たちの友達です。ただし、それらを分割する順序は、何よりもあなたの行動に大きな影響を与える可能性があります.
複数のアプリ間で再利用できる一般的なセクション (レポートなど) と、アプリケーション自体に特化したセクションを確認してください。アプリケーション自体に関連付けられている機能は、すでにより緊密に結合されている可能性が高く、それを回避する必要がある場合があります。
ERP の場合、私は常にトランザクションの「コア」モジュールを好んでいました。これは、他のすべてのトランザクション プロバイダー (プロセスが定義されると請求がプロセスをプッシュします) と同じです。
Lotus Notes ERP を 90 年代から SAP ERP に変換したとき、Lotus Notes アプリは素晴らしく、すべてを適切に処理しました。モジュールとして統合されていない側で構築されたいくつかのミニアプリがあり、それがそれを取り除く主な理由でした.
今日の要件でアプリを書き直したとしたら、どのように変更したでしょうか? あなたが持っているものとの大きな違いがあるかどうかを確認してください。最初にオーバーホール/モジュール化が必要なものを決定するために、アプリに注意を向けさせる. ColdBox はモジュール化に最適です。プラグイン タイプのモジュールを使用している場合でも、適切に分離されたコードを使用している場合でも、失敗することはありません。これは、開発者の時間とお金の関数にすぎません。
単体テストをビルド/自動化する最初のモジュールは、プログラム的に最も複雑です。あなたがまともな開発者であれば、昨日の時点でエンドツーエンドの単体テストは必要ない可能性があります。最も複雑なものから始めて、アプリのコア部分に進み、夜更かしする可能性のある他の領域に広げます。
それが役に立ったことを願っています!よろしければ、あなたが何をしているかを共有してください。私が言及したことでさらに説明が必要な場合は、ここまたはツイッターで連絡してください:) @JasPanesar