mirror of
https://github.com/corda/corda.git
synced 2024-12-30 01:39:04 +00:00
CORDA-3906: Allow usage of SchedulableState in deterministic CorDapps. (#6457)
This commit is contained in:
parent
75bade2f92
commit
57e5f27961
@ -89,6 +89,7 @@ interface OwnableState : ContractState {
|
|||||||
// DOCEND 3
|
// DOCEND 3
|
||||||
|
|
||||||
/** Something which is scheduled to happen at a point in time. */
|
/** Something which is scheduled to happen at a point in time. */
|
||||||
|
@KeepForDJVM
|
||||||
interface Scheduled {
|
interface Scheduled {
|
||||||
val scheduledAt: Instant
|
val scheduledAt: Instant
|
||||||
}
|
}
|
||||||
@ -101,6 +102,7 @@ interface Scheduled {
|
|||||||
* lifecycle processing needs to take place. e.g. a fixing or a late payment etc.
|
* lifecycle processing needs to take place. e.g. a fixing or a late payment etc.
|
||||||
*/
|
*/
|
||||||
@CordaSerializable
|
@CordaSerializable
|
||||||
|
@KeepForDJVM
|
||||||
data class ScheduledStateRef(val ref: StateRef, override val scheduledAt: Instant) : Scheduled
|
data class ScheduledStateRef(val ref: StateRef, override val scheduledAt: Instant) : Scheduled
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -115,7 +117,7 @@ data class ScheduledStateRef(val ref: StateRef, override val scheduledAt: Instan
|
|||||||
* for a particular [ContractState] have been processed/fired etc. If the activity is not "on ledger" then the
|
* for a particular [ContractState] have been processed/fired etc. If the activity is not "on ledger" then the
|
||||||
* scheduled activity shouldn't be either.
|
* scheduled activity shouldn't be either.
|
||||||
*/
|
*/
|
||||||
@DeleteForDJVM
|
@KeepForDJVM
|
||||||
data class ScheduledActivity(val logicRef: FlowLogicRef, override val scheduledAt: Instant) : Scheduled
|
data class ScheduledActivity(val logicRef: FlowLogicRef, override val scheduledAt: Instant) : Scheduled
|
||||||
|
|
||||||
// DOCSTART 2
|
// DOCSTART 2
|
||||||
@ -134,7 +136,7 @@ interface LinearState : ContractState {
|
|||||||
val linearId: UniqueIdentifier
|
val linearId: UniqueIdentifier
|
||||||
}
|
}
|
||||||
// DOCEND 2
|
// DOCEND 2
|
||||||
@DeleteForDJVM
|
@KeepForDJVM
|
||||||
interface SchedulableState : ContractState {
|
interface SchedulableState : ContractState {
|
||||||
/**
|
/**
|
||||||
* Indicate whether there is some activity to be performed at some future point in time with respect to this
|
* Indicate whether there is some activity to be performed at some future point in time with respect to this
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
package net.corda.core.flows
|
package net.corda.core.flows
|
||||||
|
|
||||||
import net.corda.core.CordaInternal
|
import net.corda.core.CordaInternal
|
||||||
|
import net.corda.core.DeleteForDJVM
|
||||||
import net.corda.core.DoNotImplement
|
import net.corda.core.DoNotImplement
|
||||||
|
import net.corda.core.KeepForDJVM
|
||||||
import net.corda.core.serialization.CordaSerializable
|
import net.corda.core.serialization.CordaSerializable
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -11,11 +13,13 @@ import net.corda.core.serialization.CordaSerializable
|
|||||||
* the flow to run at the scheduled time.
|
* the flow to run at the scheduled time.
|
||||||
*/
|
*/
|
||||||
@DoNotImplement
|
@DoNotImplement
|
||||||
|
@KeepForDJVM
|
||||||
interface FlowLogicRefFactory {
|
interface FlowLogicRefFactory {
|
||||||
/**
|
/**
|
||||||
* Construct a FlowLogicRef. This is intended for cases where the calling code has the relevant class already
|
* Construct a FlowLogicRef. This is intended for cases where the calling code has the relevant class already
|
||||||
* and can provide it directly.
|
* and can provide it directly.
|
||||||
*/
|
*/
|
||||||
|
@DeleteForDJVM
|
||||||
fun create(flowClass: Class<out FlowLogic<*>>, vararg args: Any?): FlowLogicRef
|
fun create(flowClass: Class<out FlowLogic<*>>, vararg args: Any?): FlowLogicRef
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -30,12 +34,14 @@ interface FlowLogicRefFactory {
|
|||||||
* [SchedulableFlow] annotation.
|
* [SchedulableFlow] annotation.
|
||||||
*/
|
*/
|
||||||
@CordaInternal
|
@CordaInternal
|
||||||
|
@DeleteForDJVM
|
||||||
fun createForRPC(flowClass: Class<out FlowLogic<*>>, vararg args: Any?): FlowLogicRef
|
fun createForRPC(flowClass: Class<out FlowLogic<*>>, vararg args: Any?): FlowLogicRef
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts a [FlowLogicRef] object that was obtained from the calls above into a [FlowLogic], after doing some
|
* Converts a [FlowLogicRef] object that was obtained from the calls above into a [FlowLogic], after doing some
|
||||||
* validation to ensure it points to a legitimate flow class.
|
* validation to ensure it points to a legitimate flow class.
|
||||||
*/
|
*/
|
||||||
|
@DeleteForDJVM
|
||||||
fun toFlowLogic(ref: FlowLogicRef): FlowLogic<*>
|
fun toFlowLogic(ref: FlowLogicRef): FlowLogic<*>
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -59,4 +65,5 @@ class IllegalFlowLogicException(val type: String, msg: String) :
|
|||||||
// TODO: align this with the existing [FlowRef] in the bank-side API (probably replace some of the API classes)
|
// TODO: align this with the existing [FlowRef] in the bank-side API (probably replace some of the API classes)
|
||||||
@CordaSerializable
|
@CordaSerializable
|
||||||
@DoNotImplement
|
@DoNotImplement
|
||||||
|
@KeepForDJVM
|
||||||
interface FlowLogicRef
|
interface FlowLogicRef
|
Loading…
Reference in New Issue
Block a user