Guidewire-无法将详细信息保存到实体

时间:2018-11-28 11:13:53

标签: guidewire

我正在尝试在政策中心中保存一些详细信息。我正在从计费中心获取这些详细信息,并立即尝试保存它,但这给了我例外。

我调用了billingAPI的“ issuePolicyPeriod”函数并返回了一些值,我需要将其保存在策略中心中。

例外: 保存通信详细信息时出现异常:java.lang.RuntimeException:com.guidewire.pl.system.exception.TransactionException:不得在事务中调用commitBundle。

代码 / **   *在帐单中心签发保单期限   * @param period:政策期   * @param transactionID:使此调用幂等的唯一事务ID   * /

覆盖函数createPolicyPeriod(period:PolicyPeriod,transactionID:String):String {     var issuePolicyInfo =新的IssuePolicyInfo()     issuePolicyInfo.sync(周期)     PCLoggerCategory.BILLING_SYSTEM_PLUGIN.info(“将策略$ {period}发送到计费系统”)

 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)

}

我正在使用BillingAPI从PC调用issuePolicyPeriod()函数,并从BC返回佣金详细信息,并尝试立即将其保存在PC实体中。

嗨, 谢谢您的回答。我尝试了上面的代码,但它没有保存到实体,也没有给出任何异常。我对此有疑问吗?因为我们在这里打电话给计费中心,不知道BC何时响应。 在Web服务呼叫中,wiredwire将保持当前的捆绑包直到响应返回? 当guidewire在Web服务调用中提交当前的包时?

2 个答案:

答案 0 :(得分:1)

尝试使用当前事务而不是创建新事务。

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()称为

答案 1 :(得分:0)

尝试此代码。

    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