如何在 corda 项目的 CLI 中传递对象
How to pass object in CLI in corda projects
我正在尝试 运行 corda 中的汽车保险项目,但我不知道如何以对象类型传递 claimInfo 数据,任何人都可以帮助我
https://github.com/corda/samples/tree/release-V4/carinsurance-QueryableState
我正在尝试像这样传递数据
start InsuranceClaimInitiator claimInfo: {claimNumber: "aa",claimDescription: "rrrr", claimAmount: 9}, policyNumber: "aaa"
这是正确的还是我们需要以不同的方式通过????
它向我显示此错误
Wed Feb 19 16:34:55 IST 2020>>> flow start InsuranceClaimFlow$InsuranceClaimInitiator claimInfo: {claimNmuber: "c001",claimDescription: "hello",claimAmount: 123}, policyNumber: "hello"
No matching constructor found:
- [class net.corda.examples.carinsurance.flows.ClaimInfo, class java.lang.String]: Could not parse as a command: Cannot construct instance of `net.corda.examples.carinsurance.flows.ClaimInfo` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
at [Source: UNKNOWN; line: -1, column: -1]
Wed Feb 19 16:35:16 IST 2020>>> flow start InsuranceClaimFlow$InsuranceClaimInitiator {claimInfo: {claimNmuber: "c001",claimDescription: "hello",claimAmount: 123}}, policyNumber: "hello"
flow start InsuranceClaimFlow$InsuranceClaimInitiator {claimInfo: {claimNmuber: "c001",claimDescription: "hello",claimAmount: 123}}, policyNumber: "hello": exception: Expected a field name (Scalar value in YAML), got this instead: <org.yaml.snakeyaml.events.MappingStartEvent(anchor=null, tag=null, implicit=true)>
at [Source: (StringReader); line: 1, column: 4]
Wed Feb 19 16:36:00 IST 2020>>> [ERROR] 16:36:00+0530 [pool-8-thread-5] command.CRaSHSession. - Error while evaluating request 'flow start InsuranceClaimFlow$InsuranceClaimInitiator {claimInfo: {claimNmuber: "c001",claimDescription: "hello",claimAmount: 123}}, policyNumber: "hello"' flow start InsuranceClaimFlow$InsuranceClaimInitiator {claimInfo: {claimNmuber: "c001",claimDescription: "hello",claimAmount: 123}}, policyNumber: "hello": exception: Expected a field name (Scalar value in YAML), got this instead: <org.yaml.snakeyaml.events.MappingStartEvent(anchor=null, tag=null, implicit=true)>
at [Source: (StringReader); line: 1, column: 4] [errorCode=rc1dem, moreInformationAt=https://errors.corda.net/OS/4.3/rc1dem]
向 ClaimInfo 添加默认构造函数,它应该可以正常工作。还要用@ConstructorForDeserialization 标记参数化构造函数。它需要一个默认的构造函数来反序列化。
public ClaimInfo(){
this.claimNumber = null;
this.claimDescription = null;
this.claimAmount = 0;
}
@ConstructorForDeserialization
public ClaimInfo(String claimNumber, String claimDescription, int claimAmount) {
this.claimNumber = claimNumber;
this.claimDescription = claimDescription;
this.claimAmount = claimAmount;
}
我认为我们应该在示例中更新它,或者如果你愿意,你可以做一个 PR 更好。
我正在尝试 运行 corda 中的汽车保险项目,但我不知道如何以对象类型传递 claimInfo 数据,任何人都可以帮助我
https://github.com/corda/samples/tree/release-V4/carinsurance-QueryableState
我正在尝试像这样传递数据
start InsuranceClaimInitiator claimInfo: {claimNumber: "aa",claimDescription: "rrrr", claimAmount: 9}, policyNumber: "aaa"
这是正确的还是我们需要以不同的方式通过????
它向我显示此错误
Wed Feb 19 16:34:55 IST 2020>>> flow start InsuranceClaimFlow$InsuranceClaimInitiator claimInfo: {claimNmuber: "c001",claimDescription: "hello",claimAmount: 123}, policyNumber: "hello"
No matching constructor found:
- [class net.corda.examples.carinsurance.flows.ClaimInfo, class java.lang.String]: Could not parse as a command: Cannot construct instance of `net.corda.examples.carinsurance.flows.ClaimInfo` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
at [Source: UNKNOWN; line: -1, column: -1]
Wed Feb 19 16:35:16 IST 2020>>> flow start InsuranceClaimFlow$InsuranceClaimInitiator {claimInfo: {claimNmuber: "c001",claimDescription: "hello",claimAmount: 123}}, policyNumber: "hello"
flow start InsuranceClaimFlow$InsuranceClaimInitiator {claimInfo: {claimNmuber: "c001",claimDescription: "hello",claimAmount: 123}}, policyNumber: "hello": exception: Expected a field name (Scalar value in YAML), got this instead: <org.yaml.snakeyaml.events.MappingStartEvent(anchor=null, tag=null, implicit=true)>
at [Source: (StringReader); line: 1, column: 4]
Wed Feb 19 16:36:00 IST 2020>>> [ERROR] 16:36:00+0530 [pool-8-thread-5] command.CRaSHSession. - Error while evaluating request 'flow start InsuranceClaimFlow$InsuranceClaimInitiator {claimInfo: {claimNmuber: "c001",claimDescription: "hello",claimAmount: 123}}, policyNumber: "hello"' flow start InsuranceClaimFlow$InsuranceClaimInitiator {claimInfo: {claimNmuber: "c001",claimDescription: "hello",claimAmount: 123}}, policyNumber: "hello": exception: Expected a field name (Scalar value in YAML), got this instead: <org.yaml.snakeyaml.events.MappingStartEvent(anchor=null, tag=null, implicit=true)>
at [Source: (StringReader); line: 1, column: 4] [errorCode=rc1dem, moreInformationAt=https://errors.corda.net/OS/4.3/rc1dem]
向 ClaimInfo 添加默认构造函数,它应该可以正常工作。还要用@ConstructorForDeserialization 标记参数化构造函数。它需要一个默认的构造函数来反序列化。
public ClaimInfo(){
this.claimNumber = null;
this.claimDescription = null;
this.claimAmount = 0;
}
@ConstructorForDeserialization
public ClaimInfo(String claimNumber, String claimDescription, int claimAmount) {
this.claimNumber = claimNumber;
this.claimDescription = claimDescription;
this.claimAmount = claimAmount;
}
我认为我们应该在示例中更新它,或者如果你愿意,你可以做一个 PR 更好。