PolicyCenter v10:仅绑定保单变更时同步修订字段至账户的方案问询
解决PolicyCenter v10中PolicyChange草稿阶段同步账户字段的问题
针对你遇到的PolicyChange草稿保存时就同步账户字段、放弃交易后无法回滚的问题,可通过以下几种方式实现“仅绑定后同步账户字段”的需求:
自定义同步触发条件
重写负责字段同步的AccountContactRoleToPolicyContactRoleSyncedField类,在同步方法中添加交易状态判断:只有当PolicyChange处于Bound状态时,才执行同步逻辑。示例代码如下:override protected void syncToAccount(PolicyContactRole source, AccountContactRole target) { def policyChange = source.policy.policyChange // 判断当前交易是否为绑定状态,非绑定则跳过同步 if (policyChange && policyChange.status != PolicyChangeStatus.BOUND) { return } super.syncToAccount(source, target) }通过交易生命周期事件触发同步
创建自定义监听器,仅在PolicyChange完成绑定的AfterBound事件中触发字段同步。这种方式能精准控制同步时机,避免草稿阶段的误同步。示例代码:@Listener class CustomPolicyChangeListener { @Handler(forEvent = PolicyChange.AfterBoundEvent) void handleAfterBound(PolicyChange.AfterBoundEvent event) { def policyChange = event.source // 遍历保单联系人角色,同步FieldA到对应账户角色 policyChange.policy.policyContactRoles.each { role -> def accountRole = role.accountContactRole if (accountRole) { accountRole.FieldA = role.FieldA accountRole.save() } } } }调整同步字段配置
检查PolicyCenter的syncedfields.xml配置文件,找到FieldA对应的同步规则,查看是否支持通过配置指定触发时机。部分同步字段可添加属性限制仅在交易绑定后执行同步。放弃交易时回滚账户字段
若上述方式难以实现,可监听PolicyChange.AbandonedEvent事件,在用户放弃交易时从原始保单中获取FieldA的原始值,手动回滚账户字段。示例代码:@Listener class CustomPolicyChangeAbandonListener { @Handler(forEvent = PolicyChange.AbandonedEvent) void handleAbandoned(PolicyChange.AbandonedEvent event) { def policyChange = event.source def originalPolicy = policyChange.originalPolicy // 从原始保单同步FieldA值回账户 originalPolicy.policyContactRoles.each { origRole -> def accountRole = origRole.accountContactRole if (accountRole) { accountRole.FieldA = origRole.FieldA accountRole.save() } } } }
内容的提问来源于stack exchange,提问作者SteveDripps
相关产品推荐
相关产品推荐

