我希望有人能激发一些想法或提供参考资料,以在 PHP 5 中创建“事务协调器”实现。驱动程序基于多供应商单一业务流程集成。由于潜在的故障点,我想避免带有大量 if、开关、try..catch 的意大利面条代码,并有一个可以拦截方法调用、跟踪对后续调用的响应并询问方法属性以确定补偿功能的协调器用于撤销交易。目的是创建类似“ACID”的处理。我可以参考的最后一个东西是 .Net 中的 TransactionScope 对象。
示例场景:
ServiceA
ServiceB
ServiceC
ServiceA->DoSomething() - passes
ServiceB->DoSomething() - passes
ServiceC->DoSomething() - fails
此时 A & B 必须采用某种类型的补偿策略来调用将返回状态的功能,无论是数据库、第三方集成还是以其他方式返回其原始状态。
我最初的想法是使用某种类型的 AOP 来保存对补偿器的引用和完成反转活动的状态要求。协调器需要跟踪执行以及返回的执行状态以允许调用补偿器。