数据库Bean版本冲突-(工作队列中的处理记录Guidewire

时间:2019-05-13 13:08:09

标签: gosu guidewire

我在BillingCenter Guidewire中创建了一个工作队列来处理大数据,但是对于某些记录,数据库返回了一个异常“数据库bean版本冲突:”

有人可以帮助我吗?

控制人员如何处理没有冲突的记录?

关于, 道格拉斯·里曾德(Douglas Rezende)

2 个答案:

答案 0 :(得分:0)

当实体是可版本控制的,并且两个进程正在更改同一“记录”时,将发生该异常。我认为您需要在WorkQueue的findTargets方法中添加一个控件,也许您的WorkQueue的新实例正在上次执行完成之前运行。

private var _lock : ReentrantLock = new ReentrantLock()
private final static var _batchProcessType = BatchProcessType.TC_JOBEXPIRE

override function findTargets(): Iterator<PolicyPeriod> {
  using( _lock ) {
    var maintenanceToolsAPI = new gw.webservice.pc.pc800.MaintenanceToolsAPI()
    if (!maintenanceToolsAPI?.getWQueueStatus(_batchProcessType.Code)?.NumActiveWorkItems != 0) {
      // ...
    }
    return {}.iterator() as Iterator<PolicyPeriod>
  }
}

通过这种方式验证不存在具有有效项目的执行。

答案 1 :(得分:0)

如果您在整个群集中分配工作队列的负载,并且有消息更改同一实体,则会发生这种情况。 Guidewire 9实施了租用以获得资源的概念,您可以实施类似的概念来避免在共享工作队列负载时并发-保持一个集中的表以及正在处理的记录(ID,实体类型和状态应该足够)以及您何时正在查找记录,对照该表验证它们没有被处理。