对象的属性未定义

Object's properties undefined

玩弄汽车拍卖的样本网络。 我不确定为什么 "Offer" 交易会显示所有属性,但 "AmendOffer" 交易显示以 $ 开头的属性未定义?

有没有办法将交易从 "AmendOffer" 转换为 "Offer",我尝试复制 "AmendOffer" 然后删除 属性 "oldTransactionID" 在复制的一个上,使其与 "Offer" 交易相同。

abstract transaction OfferTrans {
  o Double bidPrice
  --> VehicleListing listing
  --> Member member
}

transaction Offer extends OfferTrans {
}

transaction AmendOffer extends OfferTrans {
  o String oldTransactionID
}

假设您有 TP 函数来匹配您的交易并使用您的模型,在 Composer Playground 中,您将获得交易(您建模的),如下所示 - 在 Historian 中。

{
 "$class": "org.acme.vehicle.auction.Offer",
 "bidPrice": 10,
 "listing": "resource:org.acme.vehicle.auction.VehicleListing#L1",
 "member": "resource:org.acme.vehicle.auction.Member#1",
 "transactionId": "d133abab-cd96-4f15-ac06-ca7a065f2e84",
 "timestamp": "2018-06-04T10:38:17.042Z"
}

{
 "$class": "org.acme.vehicle.auction.AmendOffer",
 "oldTransactionID": "3333",  // whatever
 "bidPrice": 0,
 "listing": "resource:org.acme.vehicle.auction.VehicleListing#L1",
 "member": "resource:org.acme.vehicle.auction.Member#1",
 "transactionId": "3576a2f2-6264-4490-9b79-ef0d612ed07a",
 "timestamp": "2018-06-04T10:37:50.854Z"
}

如果您不想将 'oldTransactionId' 存储为必填字段 - 只需在您的模型文件中将其设为可选即可。

transaction AmendOffer extends OfferTrans {
  o String oldTransactionID optional
}

例如,以下将作为 AmendOffer事务

{
  "$class": "org.acme.vehicle.auction.AmendOffer",
  "bidPrice": 10,
  "listing": "resource:org.acme.vehicle.auction.VehicleListing#L1",
  "member": "resource:org.acme.vehicle.auction.Member#1"
}

如果您想更新该示例网络中的 Offers[] 数组(因为它现在存在),您显然需要提供适当的事务代码来执行此操作。