Skip to main content

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çãoDescriçãoParâmetro
@BusinessProcessNameInforma para VSet Chameleon que essa classe será disponibilizada para os canaisname(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
@NotLogInforma para VSet Chameleon não gravar rastreamento/performance do processo
@NotShowInforma 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çãoDescriçãoParâmetro
@OpenAPIDescreve as propriedades da apiaccept - 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


(1) Domínio dos métodos do protocolo HTTP - GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS.

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çãoDescriçãoParâmetro
@FieldInfoDescreve as propriedades do campodescription - descrição do campo
required - informa se o campo é obrigatório
@PathParameterParâmetro fará parte do endpoint
@QueryParameterParâ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
}
Como cria o método para pegar os dados que estão enviados pelo path query (padrão URL)?

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
}