К счастью, проблема, с которой мы здесь сталкиваемся, не уникальна.
Здесь, похоже, проблема не в самом коде или в том, как его разбить на части, а в том, чтобы понять, что вы сейчас в разработке и разработке ERP.
Знание того, как лучше всего разработать и вырастить ERP, который логически управляет деталями этой организации, является более глубоким вопросом, на который, я думаю, вы пытаетесь ответить.Сам дизайн и архитектура того, как кодировать это, вытекает из понимания основных функциональных областей, которые вам нужны.
К счастью, мы можем изучить некоторые существующие ERP-системы, которые вы можете использовать, чтобы увидеть, как они справляются с некоторыми изпроблемы.Есть несколько хороших ERP-программ с открытым исходным кодом, и мне пришло в голову, что это полный цикл установки SAP Business One, который я наблюдал (ERP небольшого и среднего размера, которая обходит проблемы большого SAP).
То, что вы ищете, это увидеть, как другие решают ту же архитектуру ERP, с которой вы сталкиваетесь.По крайней мере, вы получите представление о компромиссах между модульностью, где провести черту между модулями и почему.
Как правило, система ERP обрабатывает все от предложения до производства (если требуется), чтобывыставление счетов, отгрузка, и полученный бухгалтерский учет работают на всем протяжении.
ERPS управляют двумя основными мирами:
- Производство товаров
- Доставка услуги
Некоторые предприятия являются фабриками по производству виджетов, другие - обслуживающими предприятиями.Полнофункциональная стандартная система ERP будет иметь одну непрерывную цепочку / жизненный цикл «заказа», который обслуживается несколькими этапами.
Если мы прочитаем приблизительный список шагов, которые может охватить ERP, вы увидите те, которые относятся к вам.Это, вероятно, модули, которые у вас есть или должны быть разбиты на ваше приложение.Представьте себе следующие шаги, где каждый представляет собой отдельный документ, все из которых связаны с предыдущим в цепочке.
- Создание потенциальных клиентов -> Возможности продаж
- Возможности продаж -> Цитировать /Смета
- Цитата Смета -> Заказ на продажу
- Заказ на продажу -> Производственный заказ (Построить или назначить кого-либо для выполнения работы)
- Производственный заказ ->Заказы на поставку (Заказывайте необходимые материалы или специалистов, чтобы прибыть при необходимости)
- Производственный заказ -> Планирование производства (Что будет построено, когда или Кто это сделает, когда?)
- График производства -> Продукция!(Выполните работу)
- Произведенные услуги / Товары -> Корректировки инвентаризации - при необходимости преобразуйте все сырые запасы в готовую продукцию или подготовьте ее к отправке
- Готовые товары / Услуги ->Упаковочный лист
- Элементы упаковочного листа -> Счет-фактура
Для участия системных интеграторов используются необходимые шаги и пропускаются те, которые не используются.Это приводит к одной вещи для вашего растущего приложения:
Создайте надежную стратегию защиты данных.Убедитесь, что вам удобно, чтобы каждый мог видеть только то, что должен.Предполагая, что это происходит, хорошая идея разбить приложение на основные части.Модули наши друзья.Однако порядок их разбивки, вероятно, окажет большее влияние на то, что вы делаете, чем на что-либо еще.
Посмотрите, какие разделы являются общими (отчеты и т. Д.), Которые могут быть повторно использованы между несколькими приложениями,и которые более специализированы для самого приложения.Функции, которые связаны с самим приложением, вероятно, будут уже более тесно связаны, и вам, возможно, придется обойти это.
Для ERP я всегда предпочитал транзакционный «основной» модуль, который все остальныепровайдеры транзакций (выставление счетов за продвижение процесса, как только он определен).
Когда я преобразовал Lotus Notes ERP с 90-х годов в SAP ERP, приложение Lotus Notes было превосходным, оно обрабатывало все как и должно.Были некоторые мини-приложения, построенные на стороне, которые не были интегрированы как модули, что было главной причиной избавления от него.
Если бы вы переписали приложение сегодня с учетом сегодняшних требований, как бы вы сделали это иначе?Посмотрите, есть ли существенные отличия от того, что у вас есть.Позвольте приложению побороться за ваше внимание, чтобы решить, что в первую очередь нуждается в капитальном ремонте / модульности.ColdBox отлично подходит для модульности, независимо от того, используете ли вы модули типа плагинов или просто используете хорошо разделенный код, вы не ошибетесь с ним, это всего лишь функция времени и средств для разработчиков, доступных для его выполнения.
Первые модули, на которых я собирался / автоматизировал модульное тестирование, являются наиболее сложными программно.Скорее всего, если вы приличный разработчик, вам не нужно от конца до конца модульного тестирования со вчерашнего дня.Начните с самого сложного, перейдите к основным частям приложения, а затем перейдите к другим областям, которые могут не дать вам спать по ночам.
Надеюсь, что это помогло!Поделитесь, что вы в конечном итоге делаете, если не возражаете, если что-то, о чем я упомянул, нуждается в дополнительном объяснении, напишите мне здесь или в твиттере :) @ JasPanesar