ChoreographyAgentWrapper
Classe ChoreographyAgentWrapper
Implementa as regras de negócio de um processo de negócio gerenciado pela coreografia do VSet Chameleon. Só será executado o processo após da autenticação do usuário.
Nota: Essa classe tem que ter pelo menos um processo participante ChoreographyParticipant.
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) |
@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 |
Exemplo:
@BusinessProcessName(name="CotacaoAuto", description="Cotação de auto")
@NotLog
@NotDisplay
public class CotacaoAuto extends ChoreographyAgentWrapper {
// any code
}
Estrutura de dados
| Anotação | Descrição | Parâmetro |
|---|---|---|
@Internal | Informa que este campo não é disponibilizado para os canais | |
@ReadOnly | Informa que este campo é somente leitura para os canais | |
@Confidential | Informa que este campo é informação sensível. Aparece no log como asterisco |
Exemplo:
public class AccountBalanceInfoOutput {
@FieldInfo(description="Saldo da conta", required=true)
@Internal
@Confidential
private double accountBalance;
@FieldInfo(description="Limite do cartão", required=false)
@ReadOnly
private double cardLimit;
@FieldInfo(description="Saldo do cartão", required=false)
private double cardBalance;
public double getAccountBalance() {
return accountBalance;
}
public void setAccountBalance(double accountBalance) {
this.accountBalance = accountBalance;
}
public double getCardLimit() {
return cardLimit;
}
public void setCardLimit(double cardLimit) {
this.cardLimit = cardLimit;
}
public double getCardBalance() {
return cardBalance;
}
public void setCardBalance(double cardBalance) {
this.cardBalance = cardBalance;
}
}
Método do processo de negócio
| Método | Tipo | Descrição | |
|---|---|---|---|
getInput() | Object – classe de dados da classe de negócio | Estrutura de dados da entrada da classe de negócio | Opcional |
getOutput() | Object – classe de dados da classe de negócio | Estrutura de dados da saída da classe de negócio | Opcional |
addParticipant(Class<?> participant, boolean abort) | void | Adiciona os processos participantes da coreografia | Obrigatório |
builtIn() | void | Implementa regras de negócio na instanciação da classe | Opcional |
initialize() | void | Implementa inicializações | Opcional |
enhancementControllerLayer(Context context) | void | Implementa regras de controle e segurança | Opcional |
preProcess() | void | Implementa regras que serão executadas antes do validate() | |
validate() | void | Implementa validações necessárias | Opcional |
beforeProcess() | void | Implementa alguma atividade antes de processar o método process() | Opcional |
process() | void | Implementa a regra de negócio propriamente dita | Obrigatório |
afterProcess() | void | Implementa alguma atividade ou rotina após a execução do método process() | Opcional |
finalize() | void | Implementa alguma atividade ou rotina para finalização | Opcional |
rollback() | void | Implementa alguma atividade ou rotina de desfazimento caso houver alguma exceção na classe de negócio | Opcional |
Nota: Quando o coreografia do VSet Chameleon executa a classe, serão executadas os métodos na forma sequencial:
- enhancementLayer
- validate
- beforeProcess
- process
- afterProcess
- finalize
Se houver alguma exceção por parte da execução da classe de negócio, o VSet Chameleon executará o método
rollback()para desfazer o contexto transacional.O método
process()é o principal método que executa as regras de negócio da classe de negócio.
Exemplo:
@BusinessProcessName(name="CotacaoAuto", description="Cotação de auto - multicalculo", channel=true)
public class CotacaoAuto extends ChoreographyAgent {
private CotacaoAutoInput input = new CotacaoAutoInput();
private CotacaoAutoOutput output = new CotacaoAutoOutput();
private int idCotacaoSeguro;
private int idCondutorPrincipal;
private CotacaoSeguradoraAuto cotacaoSeguradoraAuto;
@Override
public CotacaoAutoInput getInput() {
return input;
}
@Override
public CotacaoAutoOutput getOutput() {
return output;
}
@Override
protected void choreographyParticipant() throws Exception {
addParticipant(CotacaoAutoAllianz.class, false);
addParticipant(CotacaoAutoItau.class, false);
}
@Override
public void validate() throws Exception {
if (getSessionPropertyInt("idPreposto") == 0)
throw new ExpiredSessionException("Sessâo encerrada ou expirada. Favor fazer o login novamente.");
}
@Override
public void beforeProcess() throws Exception {
}
@Override
public void process() throws Exception {
output.setIdCotacao(idCotacaoSeguro);
for (ChoreographyParticipant participant : getParticipants()) {
if (participant.getStatus() == ChoreographyParticipant.CONCLUDED) {
if (participant instanceof CotacaoAutoAllianz) {
CotacaoAutoAllianzOutput p = (CotacaoAutoAllianzOutput) participant.getOutput();
CotacaoAutoSeguradora cas = new CotacaoAutoSeguradora();
moveCorr(p, cas, false);
cas.setCarroReserva(VariavelDefinidaMultiCalculo.getCarroReserva(p.getCarroReserva()));
output.getCotacaoAutoSeguradora().add(cas);
}
else if (participant instanceof CotacaoAutoItau) {
CotacaoAutoItauOutput p = (CotacaoAutoItauOutput) participant.getOutput();
CotacaoAutoSeguradora cas = new CotacaoAutoSeguradora();
moveCorr(p, cas, false);
cas.setCarroReserva(VariavelDefinidaMultiCalculo.getCarroReserva(p.getCarroReserva()));
output.getCotacaoAutoSeguradora().add(cas);
}
}
}
Comum.notificationWebByPerfil(2, "1", "Cotação número " + idCotacaoSeguro);
}
}
Classe ChoreographyParticipant
Implementa as regras de negócio de um processo de negócio que será gerenciado pela classe ChoreographyAgentWrapper.
Método do processo de negócio
| Método | Tipo | Descrição | |
|---|---|---|---|
getInput()(1) | Object – classe de dados da classe de negócio | Estrutura de dados da entrada da classe de negócio | Opcional |
setInput(Object input) | Object – classe de dados da classe de negócio | Inseri objeto de estrutura de dados da entrada da classe de negócio | Opcional |
getOutput() | Object – classe de dados da classe de negócio | Estrutura de dados da saída da classe de negócio | Opcional |
initialize() | void | Implementa inicializações | Opcional |
process() | void | Implementa a regra de negócio propriamente dita | Obrigatório |
finalize() | void | Implementa alguma atividade ou rotina para finalização | Opcional |
Exemplo:
public class CotacaoAutoAllianz extends ChoreographyParticipant {
private CotacaoAutoInput input;
private CotacaoAutoAllianzOutput output = new CotacaoAutoAllianzOutput();
@Override
public CotacaoAutoInput getInput() {
return input;
}
@Override
public void setInput(Object input) {
this.input = (CotacaoAutoInput) input;
}
@Override
public CotacaoAutoAllianzOutput getOutput() {
return output;
}
@Override
public void initialize() throws Exception {
}
@Override
public void process() throws Exception {
input.getIdCotacaoSeguro());
output.setCodigoSUSEP(5177);
output.setCarroReserva(input.getCarroReserva());
output.setPremio(1500.00);
output.setFranquia(3000.00);
CotacaoSeguradoraAutoDAO cotacaoSeguradoraAutoDAO = new CotacaoSeguradoraAutoDAO();
CotacaoSeguradoraAuto cotacaoSeguradoraAuto = cotacaoSeguradoraAutoDAO.getInput();
cotacaoSeguradoraAuto.setIdCotacaoSeguro(input.getIdCotacaoSeguro());
cotacaoSeguradoraAuto.setCodigoSUSEP(output.getCodigoSUSEP());
cotacaoSeguradoraAuto.setCarroReserva(input.getCarroReserva());
cotacaoSeguradoraAuto.setPremio(output.getPremio());
cotacaoSeguradoraAuto.setFranquia(output.getFranquia());
cotacaoSeguradoraAutoDAO.insert();
}
@Override
public void finalize() {
}