У меня есть некоторые трудности в определении конвейерного процесса с использованием DDD.Мой сценарий следующий:
Существует 3 ограниченных контекста:
менеджер данных пациента: отвечает за получение и управление данными всего пациента, такими как mrna, mirna, dnaметилирование и т. д.
управление данными аннотации: это аннотация о гене, мирне, белках и т. д.
анализатор: этоспециальный анализатор, который использует данные некоторых пациентов и извлекает некоторую полезную информацию об этом.Кроме того, пользователь может создать конвейер и создать puglins, определяя некоторые дополнительные шаги для обработки с использованием данных пациента.Каждый шаг уникален и выполняет только одну работу, например:
конвейер1: задача1 -> задача2 -> задача3 -> задача4 конвейер2: задача1 -> задача3 -> задача5 -> задача6
Каждая задача может генерировать некоторые данные, из-за этого задача должна управлять данными, считывать и записывать данные.
Я бы хотел уменьшить связь между задачами и задачами с менеджером данных пациента.контекст.
Например: задача1 должна получить данные в диспетчере данных пациента из-за объема данных.task1 получает некоторые данные, обрабатывает их, а затем получает дополнительные данные и обрабатывает снова.Результатом этого процесса являются некоторые данные, которые сохраняет задача1.
Затем следующая задача в конвейере - задача 3.Задача3 получить все данные из задания1.Модуль taks3 обрабатывает данные, в результате чего получаются другие данные.Задача 3 спасает их.Конвейер завершен.
Обратите внимание, что конвейер настроен перед запуском, а также для выполнения каждой задачи требуются некоторые данные и генерируются некоторые данные.
Я думал об использовании шаблона команды, чтобы получить данные в контексте диспетчера данных пациента.Что касается конвейера, у него есть фабрики для определения и настройки конвейера, и у каждой задачи есть команда для получения данных для обработки и команда для сохранения своих данных.
Я знаю, что это тесно связано, потому что команды.Я подумал об использовании шаблона хореографии с использованием сообщений, однако это действительно сложно реализовать из-за конвейера и объема данных в диспетчере данных пациента и объема данных, получаемых в результате каждой задачи.
Это нормально делать?Есть еще лучшее решение?
Код написан на python.
Спасибо большое!