Tratamento de falhas

Os eventos de provisionamento que apresentarem qualquer tipo de falha devem ser devidamente capturados e tratados por meio de exceções específicas. O tratamento adequado dessas exceções permite que o Blazon identifique corretamente a natureza da falha, possibilitando que o administrador da plataforma adote políticas de failover apropriadas para lidar com cada situação.

Falhas

A tabela abaixo descreve as exceções disponíveis atualmente:

Exceção
Código da falha

ProvisioningGeneralFailException

100

ProvisioningConnectionFailException

101

ProvisioningConnectionTimeoutException

102

ProvisioningAuthenticationFailException

103

ProvisioningAuthorizationFailException

104

ProvisioningAccountGeneralFailException

300

ProvisioningAccountNotFoundException

301

ProvisioningAccountAlreadyExistException

302

ProvisioningInvalidAccountAttributeException

303

ProvisioningMandatoryAccountEmptyAttributeException

304

ProvisioningInvalidAccountUsernameException

305

ProvisioningInvalidPasswordException

306

ProvisioningMembershipEntitlementGeneralFailException

400

ProvisioningMembershipEntitlementNotFoundException

401

ProvisioningMembershipEntitlementAlreadyExistException

402

ProvisioningInvalidMembershipEntitlementAttributeException

403

ProvisioningMandatoryMembershipEntitlementEmptyAttributeException

404

ProvisioningEntitlementGeneralFailException

500

ProvisioningEntitlementNotFoundException

501

ProvisioningEntitlementAlreadyExistException

502

ProvisioningInvalidEntitlementAttributeException

503

ProvisioningMandatoryEntitlementEmptyAttributeException

504

Exemplo de tratamento da falha

O trecho de código abaixo demonstra um exemplo de como uma falha pode ser manipulada:

import java.util.Map;

import org.springframework.stereotype.Component;

import com.blazon.resourceadapter.api.provisioning.account.operations.CreateAccountOperation;
import com.blazon.resourceadapter.api.provisioning.dto.ProvisioningResult;
import com.blazon.resourceadapter.api.provisioning.tracking.util.Tracking;

@Component
public class CreateAccount extends CreateAccountOperation {

	@Override
	public ProvisioningResult createAccount(Map<String, Object> account, Tracking tracking) {
	
		(...)
		try {
			api.create(user);
		} catch (UserAlreadyExist e) {
			throw new ProvisioningAccountAlreadyExistException(Account already exist", false);
		}
	
		return null;
	}

}

No trecho de código, sempre que método create lança uma exceção do tipo UserAlreadyExist, o Resource Adapter enviará de volta ao Blazon um código de falha indicando que já existe uma conta para o usuário que está tentando ser provisionado.

Atenção!

Lembre-se de tratar adequadamente todas as falhas. Falhas não tratadas comprometem a visibilidade e dificultam a atuação do administrador da plataforma na resolução dos problemas. Após o desenvolvimento de cada evento, é fundamental simular possíveis cenários de falha para assegurar que todas as exceções estejam corretamente capturadas e tratadas.

Last updated

Was this helpful?