我想把一些细节保存在政策中心。我正在从计费中心得到这些细节,并立即试图保存它,但这给了我例外。
我调用了billingAPI的“billingAPI”函数,并返回了一些值,我需要将其保存在策略中心。
com.guidewire.pl.system.exception.TransactionException:异常:在保存委托detais: java.lang.RuntimeException: commitBundle时,不能在事务中调用异常。
Code /** *在计费中心* @param期间发出策略期:策略期* @param transactionID:发出此调用的唯一事务id幂等*/
覆盖函数createPolicyPeriod(句号: PolicyPeriod,transactionID : String):String { var issuePolicyInfo =新的IssuePolicyInfo() issuePolicyInfo.sync(句号)到计费系统的策略${周期}“)
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)}
我从PC调用issuePolicyPeriod()函数,使用BillingAPI并从BC返回佣金详细信息,并试图立即将其保存在PC实体中。
嗨,谢谢你的回答。我尝试了上面的代码,但是它没有保存到实体,也没有给出任何异常。我在这里有疑问,现在的包还能买到吗?因为这里我们打电话给计费中心,不知道BC什么时候回应。在web服务调用中,guidewire会保存当前的包直到响应返回吗?当guidewire在web服务调用中提交当前包时?
发布于 2018-11-28 15:05:12
尝试使用当前事务而不是创建新事务。
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()将被调用
发布于 2022-02-08 14:27:59
对于一个包( com.guidewire.pl.system.exception.TransactionException::java.lang.RuntimeException:不能在事务中调用commitBundle ),我也犯了类似的错误,可以通过以下步骤来解决
var bundle = gw.transaction.Transaction.getCurrent()
https://stackoverflow.com/questions/53518143
复制相似问题