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.ymlMarbles-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:
employeeAtivo:
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 propriedade 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: booliano |
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 |