在 SWF 流程设计中包含子流程的优势

Advantage of including sub flows in SWF flow design

我可以设计带或不带子流程的 SWF。任何人都可以解释在 SWF 中以子流方式设计流的优点是什么。请帮忙。

我认为主要优势是流程的模块化(如果您正在重用流程)、SRP 原则,以及能够 return 控制回 "main" 推动更大的流程交易。

这最好用一个例子来解释。假设您是 运行 一个使用 SWF 设计的假期预订网站。

假设您有流定义:

主要流程和下面的 (3) 个子流程一致

"book-vacation-flow.xml" 

可作为子流引用的单个流

"book-plane-tickets-flow.xml"  (stand alone flow )
"book-hotel-flow.xml"          (stand alone flow )
"book-car-rental-flow.xml"     (stand alone flow )

您有代表特定 products/transactions 用户可以购买的个人流程(即机票、酒店、汽车租赁),但您还有一个用户想要将这些 transactions/flows 组合到一起的用例单个 "flow"(即 book-vacation)可能会使用所有 3 个流程。

因此 book-vacation-flow.xml 有其自己的 flow.xml 驱动 "book vacation transaction" 的定义,但在其中定义 ( 3 ) 流 book-plane-tickets-flow.xml, book-hotel-flow.xml, book-car-rental-flow.xml 作为子流定义。

此设置的优势在于,您可以"reuse"将每个单独的独立流程既作为独立流程又作为子流程。

如前所述,这样做的好处是关注点分离(SRP 原则)和 reuse-ability 流。

还有一些其他注意事项:

  • 主流<->子流的一个非常好的特性是传递 两者之间的完整 pojos,无需绑定或使用 http 参数。

  • 子流不必是独立的流,它们可以是 "private" 主要来电流程,但我个人认为不值得使用 这种用例中的子流。这只会导致混乱。只使用一个 subflow 如果您计划在其他主要流程中重用该子流程功能 流量。