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

问题描述 投票:1回答:2

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

我已经调用了billingAPI的“issuePolicyPeriod”函数并返回了一些值,我需要将其保存在Policy Center中。

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

代码/ ** *在结算中心发布保单期限* @param期间:保单期限* @param transactionID:使此调用成为幂等的唯一交易ID * /

覆盖函数createPolicyPeriod(句点:PolicyPeriod,transactionID:String):字符串{var issuePolicyInfo = new IssuePolicyInfo()issuePolicyInfo.sync(period)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服务调用中,guidewire会保留当前的bundle,直到响应回来吗?当guidewire在Web服务调用中提交当前包时?

guidewire
2个回答
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()


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

© www.soinside.com 2019 - 2024. All rights reserved.