2017-07-13 10 views
2

Cordaのドキュメントから、Vault Extensionにカスタムスキーマを持たせることができます。Corda Vaultエクステンションを使用してカスタムスキーマを作成する方法

しかし、Vault Extensionには、ノードボールトデータベースに関連するカスタムデータベーススキーマを作成/管理する能力はあまりありません。

我々はボールトとして(JDBC接続とネイティブカスタムSQLクエリを記述するためにこれを使用する方法を示すサンプルを公開するには、このリリースでは、進行中の仕事がありコルダ

答えて

5

の機能リリースにAPIを公開するつもりです拡張)。

以下のPRが処理中です。

カスタムスキーマの作成方法についてご質問がある場合は、既存のCorda Persistence APIドキュメントをご覧ください。

新しいVault Query APIを使用してそのカスタムスキーマに問い合わせることができます。既存の[Corda Vault Query API] [3]ドキュメントをご覧ください。

2

上記の例を追加するだけで、ここではYo! CorDapp。 YoSchemaV1以下を参照してください:要するに

// State. 
data class State(val origin: Party, 
       val target: Party, 
       val yo: String = "Yo!") : ContractState, QueryableState { 
    override val participants get() = listOf(target) 
    override val contract get() = Yo() 
    override fun toString() = "${origin.name}: $yo" 
    override fun supportedSchemas() = listOf(YoSchemaV1) 
    override fun generateMappedObject(schema: MappedSchema) = YoSchemaV1.YoEntity(this) 

    object YoSchemaV1 : MappedSchema(Yo.State::class.java, 1, listOf(YoEntity::class.java)) { 
     @Entity @Table(name = "yos") 
     class YoEntity(yo: State) : PersistentState() { 
      @Column var origin: String = yo.origin.name.toString() 
      @Column var target: String = yo.target.name.toString() 
      @Column var yo: String = yo.yo 
     } 
    } 
} 

を、あなたの状態オブジェクトは、上記のように、QueryableStateを実装する必要があります。

フルCorDappがここにあります:https://github.com/roger3cev/yo-cordapp

乾杯

+0

おかげでロジャーは、投稿の日の前に、私はCashSchema.V1のコアコードを見ることでMappedSchemaインターフェイスを使用してのスキーマを作成しました:)しかし、私がしましたプラグインレジストリにスキーマを登録するための課題、 –

+0

この例では、より明確に説明しています。ありがとうございました –

+0

こんにちはRoger、私はYoスキーマのような例を実装しましたが、今私はいくつかのシリアル化エラーを取得していますこれをテストするつもりです。以下、私は、ノードのプラグインのレジストリに同様のシリアル化を追加したが、その後、私はいくつかのスタックオーバーフローのエラーを得た=新しいSerializationCustomization(){ @Override 公共ボイドaddToWhitelist(クラス AClassは){ //このスタックトレース –

関連する問題