我在使用DDD定义管道过程时遇到了一些困难。我的方案如下:
有3种有界的上下文:
每个任务都可以生成一些数据,因此,任务必须对数据进行管理,读取和写入数据。
我想减少任务与病人数据管理器上下文之间的耦合。
例如: task1必须在病人数据管理器中获取数据,因为数据量很大。task1获取一些数据,对其进行处理,然后获取更多的数据,然后再进行处理。此过程将产生一些task1保存的数据。
然后,正在执行的下一个任务是task3。Task3从task1获取整个数据。taks3处理数据,产生另一个数据。任务3保存它们。管道已经完工了。
注管道是在运行前配置的,而且每个任务都需要一些数据才能工作,并生成一些数据。
我想在病人数据管理器上下文中使用命令模式tho获取数据。关于管道,它有工厂来定义和配置管道,每个任务都有一个要处理的数据获取命令和保存其数据的命令。
我知道这是紧密耦合的,因为命令。我曾想过使用消息的编排模式,但是这真的很难实现,因为管道和病人数据管理器中的数据量以及每个任务结果的数据量。
可以这么做吗?还有更好的解决办法吗?
代码在python中。
非常感谢!
发布于 2018-12-01 06:35:02
DDD与管道没有任何冲突。这个问题有点假设,但我会尽力回答它。从技术上讲,您可以只拥有一个执行特定域任务的通用任务接口。例如,见下面的样板。
class DomainTask1:
def __init__(self):
pass
def run(self):
# do something
class DomainTask2:
def __init__(self):
pass
def run(self):
# do something else
def run_pipeline(pipeline):
for task in pipeline:
task.run()
pipeline = [
DomainTask1(),
DomainTask2()
]
run_pipeline(pipeline)https://stackoverflow.com/questions/52817192
复制相似问题