proophsoftware / done-process
工作流处理工具
Requires
- php: >=5.5
- beberlei/assert: ^2.0
- codeliner/array-reader: ^1.1
- codeliner/php-equalsbuilder: ^1.2
- prooph/common: ^3.5
- proophsoftware/done-chapter-logger: dev-master
- proophsoftware/done-shared: dev-master
- rhumsaa/uuid: ^2.7
Requires (Dev)
- phpunit/phpunit: ^4.8
This package is auto-updated.
Last update: 2024-09-17 01:58:38 UTC
README
简化工作流处理 - 由 prooph software GmbH 驱动
中间件拯救
一个 DONE! 故事被分为章节。每个章节代表完成故事所需的过程。这个过程可能由多个步骤组成,这些步骤相互依赖。以数据库导入为例。
想象一下,前一个章节已经从外部系统收集了用户信息,并将数据放入 CSV 文件中。下一个章节的任务是从 CSV 文件(理想情况下逐行)加载数据,并将数据导入空表中。
哦,等等!如果表不为空怎么办? 很好的发现!我们想进行完全同步,但又不希望数据库停机。所以我们需要首先将新数据导入临时表中。如果这个操作成功,我们可以删除旧的用户表,并将临时表重命名为新的用户表。
正如你所见,一个简单的故事可以变得相当复杂。在另一个故事中,我们可能想要做一些相同的步骤,但其他步骤则不这样做。这就是中间件发挥作用的时候。
我们不是编写一个包含所有上述步骤的单个脚本,而是将过程分解为步骤,并将这些步骤作为中间件实现。我们的例子最终会变成这个中间件
- CreateEmptyTableMiddleware
- LoadDataFromCsvFileMiddleware
- ImportDataIntoTableMiddleware
- ExchangeTableMiddleware
中间件配置
到目前为止一切顺利,但中间件如何知道创建哪个表、加载哪个文件等等呢?
答案是
- 通过从 DONE! 后端发送的章节命令中提取的信息,该命令用于启动章节。
- 以及将要处理的数据的类型描述。
章节命令
章节命令必须是 Prooph\Common\Messaging\Message。它由 DONE! 后端设置并发送,通常包括有关章节(配置)的信息。
原型和数据类型
章节命令应该提供的重要信息是处理哪些数据。为了使中间件更容易识别数据的类型,并可能获得有关属性或集合项类型的更多信息,这个包提供代表不同 value types 的特殊值对象。类型对象被设计用来包围它们的原生对应物,并且是可扩展的。例如,你可以创建一个扩展 AbstractDictionary 的用户类型。一个用户类型可能看起来像我们在测试套件中使用的 UserDictionary。
此外,这个包还提供了一个 Prototype 类。原型描述了一个值类型,而不引用实际的值。
更多信息即将到来。敬请期待!
您的 prooph software 团队