Corda-API-Flows
Flows
一个流程示例
包括两个方面:
- Initiator:发起方
- Responder:响应方
发起方包含如下流程:
Part1——建立交易
- 选择公证人
- 创建交易生成器(transaction builder)
- 从库中提出所有的输入状态,并添加到生成器中
- 创建所有输出并添加到生成器中
- 添加commands,attachments和time-window
Part2——签名
- 对交易生成器签名
- 将生成器转换为签名过的交易(signed transtraction)
Part3——验证交易
- 通过合同(contracts)验证交易
Part4——收集交易对手的签名
- 将交易
关闭会话API
- 在
FLowsession
中有clolse()
- 在
FlowLogic
中有closw(sessions:NonEmpty<FlowSession>)
val session = initiateFlow(party)
try {
...
} finally {
session.close()
}
val session = initiateFlow(party)
session.use {
...
}
不要在finally
语句块中使用close()
,有如下两个原因:
- 没有必要。上面如果报错,流就会终止,状态机会释放资源和内存等,不需要再调用
close()
。 - 出现我们不期望的结果。例如:我们本应该收到错误信息,但是由于在
finally
中添加了close()
,我们可能得到的是关闭flow的相关信息,而没有得到期望的错误信息。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 chl'blog!