我們如何在corda中實現可調度狀態?在我的情況下,我需要發佈每月的聲明,所以可以使用schedulablestate來做到這一點?在corda中實現可調度狀態
1
A
回答
4
有很多事情你需要做。
首先,您的狀態對象需要實現SchedulableState
接口。它增加了一個額外的方法:
interface SchedulableState : ContractState {
/**
* Indicate whether there is some activity to be performed at some future point in time with respect to this
* [ContractState], what that activity is and at what point in time it should be initiated.
* This can be used to implement deadlines for payment or processing of financial instruments according to a schedule.
*
* The state has no reference to it's own StateRef, so supply that for use as input to any FlowLogic constructed.
*
* @return null if there is no activity to schedule.
*/
fun nextScheduledActivity(thisStateRef: StateRef, flowLogicRefFactory: FlowLogicRefFactory): ScheduledActivity?
}
該接口需要被實現,它返回一個可選ScheduledActivity
實例名爲nextScheduledActivity
的方法。 ScheduledActivity
捕獲每個節點將運行的實例,執行該活動,以及何時將運行由java.time.Instant
描述。一旦你的狀態實現了這個界面並且被Vault跟蹤,它可以期待在下一個活動被提交到Vault時被查詢。例如:
class ExampleState(val initiator: Party,
val requestTime: Instant,
val delay: Long) : SchedulableState {
override val contract: Contract get() = DUMMY_PROGRAM_ID
override val participants: List<AbstractParty> get() = listOf(initiator)
override fun nextScheduledActivity(thisStateRef: StateRef, flowLogicRefFactory: FlowLogicRefFactory): ScheduledActivity? {
val responseTime = requestTime.plusSeconds(delay)
val flowRef = flowLogicRefFactory.create(FlowToStart::class.java)
return ScheduledActivity(flowRef, responseTime)
}
}
其次,這是schedulted開始(在這種情況下FlowToStart
)的FlowLogic
類也必須標註了@SchedulableFlow.
例如
@InitiatingFlow
@SchedulableFlow
class FlowToStart : FlowLogic<Unit>() {
@Suspendable
override fun call() {
// Do stuff.
}
}
現在,當ExampleState
存儲在庫中,FlowToStart
將schedulted在ExampleState
指定的偏移時間啓動。
就是這樣!
相關問題
- 1. 如何更新corda中的狀態
- 2. 動態調度實現
- 3. C++實現狀態
- 4. 狀態機實現
- 5. Corda:在單個事務中添加多個輸出狀態
- 6. 在Labview中實現分層狀態機
- 7. 如何在Erlang中實現狀態?
- 8. 在MVC中實現多狀態模型
- 9. 在WPF中實現狀態機模式
- 10. 是否可以在Android應用程序中實現Flex狀態
- 11. POSIX實現的狀態
- 12. Quartz調度程序可以實現嗎?
- 13. 如何在apache上實現角度推送狀態
- 14. 在免費RTos中實現調度器
- 15. 在Windows中實現調度程序類
- 16. Erlang中分層狀態機的實現
- 17. 使用動態和靜態調度來實現特徵實現者的功能
- 18. ajax調用進度條/進度狀態
- 19. 是否有可能在Corda網絡中實時註冊節點
- 20. 在這裏實現狀態模式可以嗎?
- 21. Spring--調度和池化不同狀態的可運行程序(每個Runnable實例有不同的狀態)
- 22. Java實現算法調度
- 23. 調度算法實現C++
- 24. Azure調度程序實現
- 25. 在UITableView上實現動態高度
- 26. 如何從Corda M12.1的MockNode的vaultService獲取合同狀態?
- 27. 實現計算器使用狀態的存儲/調用功能
- 28. Hibernate NamingStrategy實現保持調用之間的狀態
- 29. 如何在多個文件中實現網絡可存儲性狀態?
- 30. 簡單的狀態消息實現
這是一個有趣的問題,我正在研究一個類似的用例,但我還沒有在實際的實施,但是,schedulableState是你需要的 –