包 | mx.data |
类 | public class ConflictDetector |
继承 | ConflictDetector Object |
语言版本: | ActionScript 3.0 |
产品版本: | Adobe Digital Enterprise Platform Data Services for Java EE 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
确定处理推送的操作时是否存在冲突的方法有三种,checkCreate()
、checkDelete()
和 checkUpdate()
。使用两个参数(本地更改和远程更改)对相应的操作调用每种方法。
如果要自定义在客户端上检测冲突的方式,可以根据需要扩展此类并增强行为以匹配远程组装器逻辑。
下列代码提供的示例演示了如何使用这些方法指示已发生冲突。始终指示 remoteChange 上的冲突。
公共方法
方法 | 由以下参数定义 | ||
---|---|---|---|
ConflictDetector(dataService:ConcreteDataService)
构造默认冲突检测机制的实例。 | ConflictDetector | ||
由 DataService 在从远程目标推送/处理创建操作时调用。 | ConflictDetector | ||
由 DataService 在从远程目标推送/处理删除操作时调用。 | ConflictDetector | ||
由 DataService 在从远程目标推送/处理删除填充操作时调用。 | ConflictDetector | ||
由 DataService 在从远程目标推送/处理更新操作时调用。 | ConflictDetector | ||
表示对象是否已经定义了指定的属性。 | Object | ||
表示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | ||
表示指定的属性是否存在、是否可枚举。 | Object | ||
设置循环操作动态属性的可用性。 | Object | ||
返回此对象的字符串表示形式,其格式设置遵守区域设置特定的约定。 | Object | ||
返回指定对象的字符串表示形式。 | Object | ||
返回指定对象的原始值。 | Object |
构造函数详细信息
ConflictDetector | () | 构造函数 |
public function ConflictDetector(dataService:ConcreteDataService)
语言版本: | ActionScript 3.0 |
产品版本: | Adobe Digital Enterprise Platform Data Services for Java EE 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
构造默认冲突检测机制的实例。
参数dataService:ConcreteDataService — 对将使用此冲突探测器的数据服务的 ConcreteDataService 引用。
|
方法详细信息
checkCreate | () | 方法 |
public function checkCreate(remoteChange:IChangeObject, localChange:IChangeObject):void
语言版本: | ActionScript 3.0 |
产品版本: | Adobe Digital Enterprise Platform Data Services for Java EE 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
由 DataService 在从远程目标推送/处理创建操作时调用。
参数
remoteChange:IChangeObject — IChangeObject,表示正在处理的远程更改。
| |
localChange:IChangeObject — IChangeObject,表示对 remoteChange 参数引用的同一对象所做的任何本地更改。如果尚未对 remoteChange 参数所表示的项执行任何本地更改,此值可能为 null 。
|
checkDelete | () | 方法 |
public function checkDelete(remoteChange:IChangeObject, localChange:IChangeObject):void
语言版本: | ActionScript 3.0 |
产品版本: | Adobe Digital Enterprise Platform Data Services for Java EE 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
由 DataService 在从远程目标推送/处理删除操作时调用。
参数
remoteChange:IChangeObject — IChangeObject,表示正在处理的远程更改。
| |
localChange:IChangeObject — IChangeObject,表示对 remoteChange 参数引用的同一对象所做的任何本地更改。如果尚未对 remoteChange 参数所表示的项执行任何本地更改,此值可能为 null 。
|
checkRemoveFromFill | () | 方法 |
public function checkRemoveFromFill(localChange:IChangeObject, fillParameters:Object):void
语言版本: | ActionScript 3.0 |
产品版本: | Adobe Digital Enterprise Platform Data Services for Java EE 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
由 DataService 在从远程目标推送/处理删除填充操作时调用。
参数
localChange:IChangeObject — 表示项的本地版本的 IChangeObject,该项是服务器通知我们要从指定 dill
| |
fillParameters:Object — 填充参数标识要从其删除项的填充。
|
checkUpdate | () | 方法 |
public function checkUpdate(remoteChange:IChangeObject, localChange:IChangeObject):void
语言版本: | ActionScript 3.0 |
产品版本: | Adobe Digital Enterprise Platform Data Services for Java EE 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
由 DataService 在从远程目标推送/处理更新操作时调用。
参数
remoteChange:IChangeObject — IChangeObject,表示正在处理的远程更改。
| |
localChange:IChangeObject — IChangeObject,表示对 remoteChange 参数引用的同一对象所做的任何本地更改。如果尚未对 remoteChange 参数所表示的项执行任何本地更改,此值可能为 null 。
|
示例 如何使用本示例
override public function checkCreate(remoteChange:IChangeObject, localChange:IChangeObject):void { // if we have created a local item that is the same item as the remote // change then we have a conflict if (localChange != null && ObjectUtil.compare(remoteChange.identity, localChange.identity) == 0) { remoteChange.conflict("Local created item is in conflict with remotely created item", localChange.changedPropertyNames); } } override public function checkDelete(remoteChange:IChangeObject, localChange:IChangeObject):void { // if we have an update locally for an item that was deleted remotely // that is considered a conflict. if (localChange != null) { if (localChange.isUpdate()) { remoteChange.conflict("Local item was updated and is in conflict with pushed delete.", localChange.changedPropertyNames); } } } override public function checkUpdate(remoteChange:IChangeObject, localChange:IChangeObject):void { // get a list of all of the changed properties var changes:Array = remoteChange.changedPropertyNames; // get the remote state of the item's properties var newVersion:Object = remoteChange.newVersion; var prevVersion:Object = localChange.previousVersion; // properties will be in conflict if the old value of a property on the // local item is different from the same property value of the new version // of the remote item. var conflictingProps:Array = []; for (var i:int=0; i<changes.length; i++) { var prop:Object = changes[i]; // could be a String or QName if (ObjectUtil.compare(prevVersion[prop], newVersion[prop]) != 0) { conflictingProps.push(prop); } } if (conflictingProps.length > 0) { remoteChange.conflict("Local item has changes to properties that conflict with remote change.", conflictingProps); } }
Tue Jun 12 2018, 11:04 AM Z