首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在DDD中创建管道进程?

如何在DDD中创建管道进程?
EN

Stack Overflow用户
提问于 2018-10-15 12:49:59
回答 1查看 462关注 0票数 1

我在使用DDD定义管道过程时遇到了一些困难。我的方案如下:

有3种有界的上下文:

  • 病人数据管理器:负责检索和管理整个病人的数据,如mrna、mirna、dna甲基化等等。
  • 注释数据管理:这是关于基因,mirna,蛋白质等的注释。
  • 分析器:这是一个特殊的分析器,使用一些病人的数据,并提取一些有用的信息。此外,用户还可以创建管道并创建puglins,定义一些使用患者数据处理的附加步骤。每一步都是独一无二的,只做一项工作,如下所示: pipeline1: task1 -> task2 -> task3 -> task4 pipeline2: task1 -> task3 -> task5 -> task6

每个任务都可以生成一些数据,因此,任务必须对数据进行管理,读取和写入数据。

我想减少任务与病人数据管理器上下文之间的耦合。

例如: task1必须在病人数据管理器中获取数据,因为数据量很大。task1获取一些数据,对其进行处理,然后获取更多的数据,然后再进行处理。此过程将产生一些task1保存的数据。

然后,正在执行的下一个任务是task3。Task3从task1获取整个数据。taks3处理数据,产生另一个数据。任务3保存它们。管道已经完工了。

注管道是在运行前配置的,而且每个任务都需要一些数据才能工作,并生成一些数据。

我想在病人数据管理器上下文中使用命令模式tho获取数据。关于管道,它有工厂来定义和配置管道,每个任务都有一个要处理的数据获取命令和保存其数据的命令。

我知道这是紧密耦合的,因为命令。我曾想过使用消息的编排模式,但是这真的很难实现,因为管道和病人数据管理器中的数据量以及每个任务结果的数据量。

可以这么做吗?还有更好的解决办法吗?

代码在python中。

非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2018-12-01 06:35:02

DDD与管道没有任何冲突。这个问题有点假设,但我会尽力回答它。从技术上讲,您可以只拥有一个执行特定域任务的通用任务接口。例如,见下面的样板。

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52817192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档