Arquivo de Especificação de Entrada
O comando de inicialização do Blockchain App Builder lê o arquivo de especificação de entrada e gera o projeto com várias ferramentas para ajudar no processo de desenvolvimento de chaincode.
Com o arquivo de especificação, você pode especificar várias definições e comportamentos de ativos, declaração de método CRUD e não CRUD, métodos personalizados, validação de argumentos, marshalling/desestruturação automática, capacidade de persistência transparente e chamada de consultas de dados avançados usando SQL SELECTs ou CouchDB Query Language. Esses recursos serão gerados para você.
yaml
ou json
. Você pode ver arquivos de especificação de amostra em ambos os formatos no download do pacote Blockchain App Builder:
Fabcar-Typescript.yml
Marbles-Go.yml
Observação:
De acordo com as convenções Go, os nomes exportados começam com uma letra maiúscula. Portanto, todas as propriedades e métodos do ativo devem ter nomes começando com letras maiúsculas no arquivo de especificação.Estrutura do Arquivo de Especificação
Normalmente, você estrutura um arquivo de especificação da seguinte maneira:
assets:
name:
type:
properties:
name:
type:
id:
derived:
strategy:
algorithm:
format:
mandatory:
default:
validate:
methods:
crud:
others:
customMethods:
O Blockchain App Builder suporta dois tipos de ativos especiais, ativos incorporados e ativos de token, além de ativos genéricos sem tipo especificado. Os ativos especiais são definidos como type: embedded
ou type: token
na seção assets:
do arquivo de especificação.
Tabela 7-2 Descrições e Exemplos de Parâmetro de Arquivo de Especificação
Entrada | Descrição | Exemplos |
---|---|---|
assets: |
Essa propriedade assume a definição e o comportamento do ativo. Você pode fornecer várias definições de ativos aqui. |
|
name: |
O nome do ativo. Estes nomes são reservados. Não use esses nomes para ativos.
|
|
type: |
Tipos de ativos Os seguintes tipos de ativos especiais são suportados:
Se você não especificar um parâmetro |
|
type: tipo: incorporado |
Se essa propriedade for definida como No exemplo, a propriedade Os ativos incorporados não suportam referências circulares. Por exemplo, no exemplo anterior, o ativo |
Ativo:
employee
Ativo:
address
|
properties: |
Descreva todas as propriedades de um ativo. |
|
name: |
O nome da propriedade. |
|
id: |
Especifica o identificador deste ativo. Esta propriedade é obrigatória. |
|
type: |
Tipos de propriedades Os seguintes tipos de propriedades básicas são suportados:
Para chaincodes Go,
number é mapeado para int e float é mapeado para float64 . Outros tipos não são suportados atualmente, incluindo os seguintes tipos:
|
|
derived: |
Esta propriedade especifica que a propriedade id é derivada de outras chaves. As propriedades dependentes devem ser tipo de dados Esta propriedade tem dois parâmetros obrigatórios:
Exemplo 1
Exemplo 2:
|
Exemplo 1
Exemplo 2
|
mandatory: |
A propriedade correspondente é obrigatória e não pode ser ignorada durante a criação de um ativo. |
|
default: |
Isso fornece o valor padrão dessa propriedade. |
|
validate: |
A propriedade fornecida é validada em relação a algumas das validações prontas para uso fornecidas pelo Blockchain App Builder. Você pode encadear validações se tiver certeza de que a cadeia é válida. Se a propriedade |
|
validate: tipo: número |
Essas validações podem ser encadeadas separadas por vírgulas. |
|
validate: tipo: string |
Para códigos de cadeia Go, as expressões regulares que contêm determinados caracteres reservados ou caracteres de espaço em branco devem ter escape adequado. |
|
validate: tipo: boolean |
No exemplo, a validação da propriedade |
|
validate: tipo: array |
Por tipo em si, na forma de Você pode informar limites para o array no formato |
|
validate: tipo: data |
A data deve ser um destes formatos:
|
|
methods: |
Use esta opção para indicar qual CRUD (Criar/Ler/Atualizar/Excluir) ou métodos adicionais devem ser gerados. Por padrão, se nada for inserido, todos os métodos CRUD e outros serão gerados. |
|
crud: |
Se essa matriz for deixada vazia, nenhum método CRUD será criado. Se o parâmetro O parâmetro |
|
others: |
Se essa matriz for deixada vazia, nenhum outro método será criado. Se o parâmetro O parâmetro |
|
customMethods: |
Essa propriedade cria modelos de método personalizados invocáveis no arquivo do controlador principal. Ele pega a assinatura do método e cria a declaração de função no arquivo do controlador. Você pode fornecer declarações de função específicas do idioma aqui. Fornecemos um método personalizado chamado |
TypeScript
Go
|