Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sharepoint 事务设计模式_Sharepoint_Design Patterns_Transactions - Fatal编程技术网

Sharepoint 事务设计模式

Sharepoint 事务设计模式,sharepoint,design-patterns,transactions,Sharepoint,Design Patterns,Transactions,我需要使用不支持COM+或.NET事务(确切地说是Sharepoint)的外部API创建“事务”流程 我需要做的是能够在一个序列中执行多个进程,但该序列中的任何失败都意味着我必须手动撤消前面的所有步骤。在我的例子中,只有两种类型的步骤,都是af,它们都非常容易撤消/回滚 有没有任何关于设计模式或结构的建议可以用于此目的?GoF命令模式支持可撤消的操作 我认为同样的模式也可以用于顺序操作(顺序命令)。您可能想看看补偿资源管理器: 如果对SharePoint对象模型进行了更改,则可以使用这样一个事实

我需要使用不支持COM+或.NET事务(确切地说是Sharepoint)的外部API创建“事务”流程

我需要做的是能够在一个序列中执行多个进程,但该序列中的任何失败都意味着我必须手动撤消前面的所有步骤。在我的例子中,只有两种类型的步骤,都是af,它们都非常容易撤消/回滚


有没有任何关于设计模式或结构的建议可以用于此目的?

GoF命令模式支持可撤消的操作


我认为同样的模式也可以用于顺序操作(顺序命令)。

您可能想看看补偿资源管理器:


如果对SharePoint对象模型进行了更改,则可以使用这样一个事实,即在调用修改对象的
Update()
方法之前,更改不会提交,例如
SPList.Update()
SPWeb.Update()

否则,我将使用命令设计模式。第6章中有一个实现撤销功能的例子。

< P>如果你使用C++(或者任何其他具有确定性析构函数的语言,当作用域结束时),你可以看看。通过使ScopeGuard实现IDisposable并根据需要喷洒“使用”语句,这种技术也可能适用于.NET。

在GOF旁边,您可能还想从中查看模式


您可能应该创建一个按顺序执行的复合命令(或事务脚本)。

回滚/撤消的另一个好方法是。它通常用于在给定时间拍摄对象的快照,并将对象状态还原为纪念品