Guidewire - невозможно сохранить детали для объекта - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь сохранить некоторые детали в центре политики.Я получаю эти данные из биллингового центра и сразу пытаюсь сохранить их, но это дает мне исключение.

Я вызвал функцию IssuePolicyPeriod в billingAPI и возвратил некоторые значения, и мне нужно сохранить это в Центре политик.

Исключение: Исключительная ситуация при сохранении комиссии detais: java.lang.RuntimeException: com.guidewire.pl.system.exception.TransactionException: commitBundle не должен вызываться в транзакции.

Код / ** * Выдача периода политики в Биллинг-центре * @param period: период политики * @param TransactionsID: уникальный идентификатор транзакции, чтобы сделать этот вызов идемпотентным* /

переопределить функцию createPolicyPeriod (period: PolicyPeriod, TransactionsID: String): String {var issuePolicyInfo = new IssuePolicyInfo () issuePolicyInfo.sync (period) PCLoggerCategory.BILLING_SYSTEM_PLUGIN.info ("Отправка политики {$"Биллинговая система ")

 var commissionList = callUpdate(\ b -> b.issuePolicyPeriod(issuePolicyInfo, transactionID))

gw.transaction.Transaction.runWithNewBundle(\ bundle -> {
  var commission = new CommissionDetails()
  bundle.add(commission)
  commission.Commission_SI = new BigDecimal( commissionList.get(1))
  commission.CommissionGST_SI = new BigDecimal(commissionList.get(2))
  commission.CommissionRate_SI = commissionList.get(3).toString()

})

return  commissionList.get(0)

}

Я звоню issuePolicyPeriod () с ПК, используя BillingAPI и возвращая комиссионные данные из BC и пытаясь немедленно сохранить их в ПК.

Привет, спасибо за ваш ответ.Я попробовал приведенный выше код, но он не сохраняет в сущности и не дает никаких исключений.Я сомневаюсь, что текущий комплект будет еще доступен?потому что здесь мы звоним в биллинговый центр и не знаем, когда ответит BC.в вызовах веб-службы будет проводник удерживать текущий пакет, пока ответ не вернется?Когда guidewire фиксирует текущий пакет в вызовах веб-службы?

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019

Попробуйте этот код.

    gw.transaction.Transaction.runWithNewBundle(\ bundle -> {
       var commission =  bundle.add(new CommissionDetails())
       commission.Commission_SI = new BigDecimal( commissionList.get(1))
       commission.CommissionGST_SI = new BigDecimal(commissionList.get(2))
       commission.CommissionRate_SI = commissionList.get(3).toString()
    })

-Aravind

0 голосов
/ 28 ноября 2018

Попробуйте использовать текущую транзакцию вместо создания новой.

var commissionList = callUpdate(\ b -> b.issuePolicyPeriod(issuePolicyInfo, transactionID))

var bundle = gw.transaction.Transaction.Current
var commission = new CommissionDetails(bundle)
commission.Commission_SI = new BigDecimal( commissionList.get(1))
commission.CommissionGST_SI = new BigDecimal(commissionList.get(2))
commission.CommissionRate_SI = commissionList.get(3).toString()

return  commissionList.get(0)

Когда вы используете runWithNewBundle , после завершения выполнения блока bundle.commit () вызывается

...