eWam AppendObject 无法将对象附加到列表

eWam AppendObject fails to append object to the list

我 运行 通过网络服务进行人口普查,以创建包括自愿配偶保险在内的会员合同。 employee和employee coverage创建成功,但是在创建spouse person对象的时候,没有追加到通信列表中。

eWam 6.0.0.36  wInterface 4.1.24.0

方法:CreateListOfActorCorrespondences

forEach curActorCorrespondence in ListOfCreatedCorrespondences using rank
   **thisActor.Correspondences.AppendObject(curActorCorrespondence)**
   if rank = DefaultCorrespondenceRank
      curActorCorrespondence.SetAsDefault
   endIf
endFor

调用了相同的方法来创建员工,但是在创建配偶时,成功创建的 curActorCorrespondence 没有附加到 thisActor.Correspondences。是什么导致了这段代码的行为差异?

查找错误

首先搜索 WSM 错误跟踪。 在这种情况下,发现以下错误:

14/01/16 15:48:12 Process Id 4176 Thread Id 6440 Thread Index 1 Minor error WLISTOF.CPP
aListReftosType.ListInsert is refused by the role: aWFCorrespondenceVersionedByDate Add =0000:0000:2380:2F00 NSId = 0 Id = 0 Version = 2147483647 Current Gold method:SLI_Actor._CreateListOfActorCorrespondences #3

问题就很清楚了,因为 aWFCorrespondenceVersionedByDateaXXX_CorrespondenceVersionedByDate child class 存在,但不是为配偶创建的。对 class 结构的进一步审查显示 class aSPLI_CreateOrUpdatePerson_In 没有任何 children classes 所以它不可能是一个缺失的覆盖/ child class 导致创建不正确的 object。

确保 XML 节点代表 class 结构

调试wInterface生成的classes中的fillvarfromparamDeserialize方法,最终找到XML结构不一致的问题。

在这种情况下: 在员工标签下:

<Correspondences xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Element xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:aXXX_Correspondance">

在注册标签下(发生故障的地方):

          <Correspondences xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:aXXX_Correspondance">
            <Element xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

更正或重新对齐 XML

xsi:type attribute 移动到正确的标签解决了这个问题,允许创建和附加正确的通信列表。