BusinessProcessRouteWrapper
Classe BusinessProcessRouteWrapper
É uma abstração para implementar o conceito de API, onde todos os processos de negócio, métodos, são agrupados de uma única classe. Tem o mesmo conceito da classe BusinessProcessWrapper. Sendo que a parte estrutural é diferente.
Anotações
Classe
| Anotação | Descrição | Parâmetro |
|---|---|---|
@BusinessProcessName | Informa para VSet Chameleon que essa classe será disponibilizada para os canais | name(1) - nome da classe de negócio description - descrição da classe de negócio channel - Informa que será visível para canal (depreciado) tag - Informa o nome da anotação @Tag |
@Tag | É um agrupador para documentação das APIs no padrão yalm e json. | code - código da tag que será atrelado a propriedade tag da anotação @BusinessProcessName description - descrição da tag label - nome da label |
@NotLog | Informa para VSet Chameleon não gravar rastreamento/performance do processo | |
@NotShow | Informa para VSet Chameleon não gravar as mensagem de requisição e resposta no log de auditoria |
(1) Quando VSet Chameleon é iniciado ou faz hot deploy, ele registra o nome do processo name no seu gerenciador de processos. É esse nome que os canais que irão invocar para executar o processo. O atributo name por padrão tem o mesmo nome da classe de negócio. Mas é opcional.
Exemplo:
@Tag(code="CPN", description="Cadastro Nacional de Produtos", label="GTIN")
@BusinessProcessName(name="Product", description="ProductInformation", channel=true, tag="CPN")
public class Product extends BusinessProcessRouteWrapper {
// any code
}
Método
| Anotação | Descrição | Parâmetro |
|---|---|---|
@OpenAPI | Descreve as propriedades da api | accept - tipo de método do protocolo HTTP(1) description - descrição da API endpoint - url da API disponibilizado para os canais api - Informa se o método será uma API |
Exemplo:
@OpenAPI(accept=OpenApiMethodType.GET, description="Informações do produto",endpoint="/product/v1/gtin/{gtinCode}", api=true)
public ProductInformationOutput gtin(String gtinCode, ProductInformationInput input) throws Exception {
// any code
}
Estrutura de dados
| Anotação | Descrição | Parâmetro |
|---|---|---|
@FieldInfo | Descreve as propriedades do campo | description - descrição do campo required - informa se o campo é obrigatório |
@PathParameter | Parâmetro fará parte do endpoint | |
@QueryParameter | Parâmetro anexado ao final de uma url |
Exemplo:
public class ProductInformationInput {
@FieldInfo(description="Código de idioma", required=false)
@QueryParameter
private String language;
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
}
Classe com várias APIs de conta bancária
Exemplo:
@Tag(code="ACC", description="Conta Bancária", label="Conta Bancária")
@BusinessProcessName(name="Account", description="Account Bank", channel=true, tag="ACC")
public class Account extends BusinessProcessRouteWrapper {
@OpenAPI(accept=OpenApiMethodType.GET, endpoint="/account/statement", description="Extrato de conta bancária - cliente")
public AccountStatementOutput statement(AccountStatementInput input) throws Exception {
// code
}
@OpenAPI(accept=OpenApiMethodType.GET, endpoint="/account/{branch}/{account}/statement", description="Extrato de conta bancária - conta")
public AccountStatementOutput statementByAccount(int branch, long account, AccountStatementByAccountInput input) throws Exception {
// code
}
@OpenAPI(accept=OpenApiMethodType.GET, endpoint="/account/statement/{nsu}")
public TransactionDataInfoOutput receipt(String nsu) throws Exception {
// code
}
@OpenAPI(accept=OpenApiMethodType.GET, endpoint="/account/schedule", description="Lista de agendamento de transações bancárias")
public ArrayList<AccountScheduleEntry> schedule() throws Exception {
// code
}
@OpenAPI(accept=OpenApiMethodType.DELETE, endpoint="/account/schedule/{nsu}", description="Cancelamento de agendamento de transação bancária")
public void cancelSchedule(String nsu) throws Exception {
// code
}
@OpenAPI(accept=OpenApiMethodType.GET, endpoint="/account/{branch}/{account}/statement/{nsu}/{operationType}", description="Comprovante de agendamento" )
public TransactionDataInfoOutput receiptByAccount(int branch, long account, long nsu, OperationTypeTransaction operationType) throws Exception {
// code
}
@OpenAPI(accept=OpenApiMethodType.POST, endpoint="/account/transfer", description="transferência entres as contas")
public AccountTransferOutput accountTransfer(AccountTransferInput ati) throws Exception {
// code
}
@OpenAPI(accept=OpenApiMethodType.GET, endpoint="/account/bankslip/{barcode}", description="Realiza a consulta de um boleto ou convênio, utilizando a linha digitável ou o código de barras")
public BankSlipInfoOutput bankSlipInfo(String barcode) throws Exception {
// code
}
@OpenAPI(accept=OpenApiMethodType.POST, endpoint="/account/payment/barcode", description="Realiza o pagamento de um boleto ou convênio, utilizando a linha digitável ou o código de barras")
public BankSlipInfoOutput barcodePayment(BarCodePaymentInput bcpi) throws Exception {
// code
}
@OpenAPI(accept=OpenApiMethodType.POST, endpoint="/account/bankslip/deposit", description="Produz um boleto específico para depósito na conta")
public BankSlipDepositOutput bankSlipDeposit(BankSlipDepositInput bsdi) throws Exception {
// code
}
@OpenAPI(accept=OpenApiMethodType.POST, endpoint="/account/opening/physicalperson", description="Abertura de conta de pessoa física")
public AccountOpeningPhysicalPersonOutput openingPhysicalPerson(AccountOpeningPhysicalPersonInput aoppi) throws Exception {
// code
}
}
FAQ (Frequently Asked Questions)
Como faço para criar um método sem a estrutura de saída?Basta criar um método com void.
Exemplo:
public void UpdateClientData(ClientDataInput input) throws Exception {
// code
}
Colocar as variáveis do tipos primitivo nos parâmetros do método. Tem que especificar os campos que se referem como query parameter entre chaves no atributo endpoint da anotação @OpenAPI. No exemplo abaixo, os campos que referem como query parameter são: branch e account.
Exemplo:
@OpenAPI(accept=OpenApiMethodType.GET, endpoint="/account/{branch}/{account}/statement", description="Extrato de conta bancária - conta")
public AccountStatementOutput statementByAccount(int branch, long account, AccountStatementByAccountInput input) throws Exception {
// code
}