我们有一个用例,需要以下步骤: (1)Initiator通过UI触发事务流 (2)流程启动,由发起人签名并发送给收件人以进行验证和签名(在Corda中) (3)发起人的流程应该暂停,直到收件人通过验证合同代码验证交易并提交"已验证的"再次通过用户界面 (4)这应该重新启动发起人的流程,并且应按照Corda的预期遵循剩余的流程
几周前提到Corda尚不支持用户交互;这个功能还没有出现吗?将来,我们甚至可能希望通过UI添加状态属性,因为它使我们能够灵活地提出我们想要的事务而不是硬编码。是否有可能在未来的版本中实现这一点?
答案 0 :(得分:4)
请参阅Negotiation Cordapp示例,了解其在实践中的运作方式here。
目前尚未实施暂停人员互动的流程(截至Corda V3.0)。
相反,您可以通过向状态添加状态标志来实现此目的:
class FooState(
override val participants: List<Party>,
val accepted: Boolean) : ContractState
你有三个命令:
interface Commands : CommandData {
class Propose : Commands
class Reject: Commands
class Accept: Commands
}
两个流程:
提案流程:在此流程中,发起人创建并签署Propose
事务,以使用Propose
命令将状态发布到分类帐accepted
标记设置为false
接受流程:在此流程中,收件人:
Reject
事务。该州已从分类账中删除并被有效拒绝Accept
事务,用于更新建议的状态,以便accepted
为true
。该州现已被接受,这一事实已登记在分类账您将为接受流提供一个参数,该参数确定是否接受该提议。当流程通过API或直接通过RPC启动时,用户将提供此参数。