# Usando expressões Spring EL

Usando a sintaxe das [expressões Spring EL](https://docs.spring.io/spring-framework/reference/core/expressions.html) é possível ler os valores dos atributos de um objeto do diretório de forma dinâmica e ainda assim transformá-los caso necessário.

As expressões Spring EL são demarcadas pelos caracter "{" e "}", e podem conter referencias à atributos de objetos disponíveis para o mapeamento.

As expressões Spring EL são usadas como a forma padrão, simples e direta para os mapeamentos de atributos de provisionamento.

### Objetos disponíveis nas expressões

Para cada um dos [eventos de provisionamento](https://docs.blazon.im/administrador/sincronismo/provisionamento/..#eventos-de-provisionamento) tem-se um **contexto** com objetos disponíveis para realizar o mapeamento.

Pode-se ver nas tabelas abaixo a relação do **evento de provisionamento** com as variáveis disponíveis para serem usadas nas expressões SpringEL, no mapeamento de atributos:

### Criação de nova conta

| Variável | Objeto                                                                                                   | Exemplo                     |
| -------- | -------------------------------------------------------------------------------------------------------- | --------------------------- |
| account  | [Account](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/account)         | {account.accountIdentifier} |
| resource | [Resource](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/resource)       | {resource.id}               |
| user     | [UserWrapper](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/userwrapper) | {user.firstName}            |

### Atualização de conta

| Variável | Objeto                                                                                                   | Exemplo                     |
| -------- | -------------------------------------------------------------------------------------------------------- | --------------------------- |
| account  | [Account](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/account)         | {account.accountIdentifier} |
| resource | [Resource](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/resource)       | {resource.id}               |
| user     | [UserWrapper](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/userwrapper) | {user.firstName}            |

### Inativação de conta

| Variável | Objeto                                                                                                   | Exemplo                     |
| -------- | -------------------------------------------------------------------------------------------------------- | --------------------------- |
| account  | [Account](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/account)         | {account.accountIdentifier} |
| resource | [Resource](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/resource)       | {resource.id}               |
| user     | [UserWrapper](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/userwrapper) | {user.firstName}            |

### Ativação de conta

| Variável | Objeto                                                                                                   | Exemplo                     |
| -------- | -------------------------------------------------------------------------------------------------------- | --------------------------- |
| account  | [Account](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/account)         | {account.accountIdentifier} |
| resource | [Resource](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/resource)       | {resource.id}               |
| user     | [UserWrapper](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/userwrapper) | {user.firstName}            |

### Revogação de conta

| Variável | Objeto                                                                                                   | Exemplo                     |
| -------- | -------------------------------------------------------------------------------------------------------- | --------------------------- |
| account  | [Account](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/account)         | {account.accountIdentifier} |
| resource | [Resource](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/resource)       | {resource.id}               |
| user     | [UserWrapper](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/userwrapper) | {user.firstName}            |

### Troca de senha

| Variável | Objeto                                                                                                   | Exemplo                     |
| -------- | -------------------------------------------------------------------------------------------------------- | --------------------------- |
| account  | [Account](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/account)         | {account.accountIdentifier} |
| resource | [Resource](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/resource)       | {resource.id}               |
| user     | [UserWrapper](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/userwrapper) | {user.firstName}            |

### Concessão de direito

O evento de provisionamento de concessão de direito tem dois mapeamentos, um para o direito e outro para a conta. Isso ocorre porque um membro de direito é uma relação entre um direito e uma conta.

#### Mapeamento do direito

| Variável    | Objeto                                                                                                   | Exemplo            |
| ----------- | -------------------------------------------------------------------------------------------------------- | ------------------ |
| entitlement | [Entitlement](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/entitlement) | {entitlement.name} |
| resource    | [Resource](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/resource)       | {resource.id}      |

#### Mapeamento da conta

| Variável | Objeto                                                                                                   | Exemplo                     |
| -------- | -------------------------------------------------------------------------------------------------------- | --------------------------- |
| account  | [Account](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/account)         | {account.accountIdentifier} |
| resource | [Resource](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/resource)       | {resource.id}               |
| user     | [UserWrapper](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/userwrapper) | {user.firstName}            |

### Revogação de direito

O evento de provisionamento de revogação de direito também tem dois mapeamentos, um para o direito e outro para a conta. Isso ocorre porque um membro de direito é uma relação entre um direito e uma conta.

#### Mapeamento do direito

| Variável    | Objeto                                                                                                   | Exemplo            |
| ----------- | -------------------------------------------------------------------------------------------------------- | ------------------ |
| entitlement | [Entitlement](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/entitlement) | {entitlement.name} |
| resource    | [Resource](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/resource)       | {resource.id}      |

#### Mapeamento da conta

| Variável | Objeto                                                                                                   | Exemplo                     |
| -------- | -------------------------------------------------------------------------------------------------------- | --------------------------- |
| account  | [Account](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/account)         | {account.accountIdentifier} |
| resource | [Resource](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/resource)       | {resource.id}               |
| user     | [UserWrapper](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/userwrapper) | {user.firstName}            |

### Criação de direito

| Variável    | Objeto                                                                                                   | Exemplo            |
| ----------- | -------------------------------------------------------------------------------------------------------- | ------------------ |
| entitlement | [Entitlement](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/entitlement) | {entitlement.name} |
| resource    | [Resource](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/resource)       | {resource.id}      |

### Atualização de direito

| Variável    | Objeto                                                                                                   | Exemplo            |
| ----------- | -------------------------------------------------------------------------------------------------------- | ------------------ |
| entitlement | [Entitlement](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/entitlement) | {entitlement.name} |
| resource    | [Resource](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/resource)       | {resource.id}      |

### Remoção de direito

| Variável    | Objeto                                                                                                   | Exemplo            |
| ----------- | -------------------------------------------------------------------------------------------------------- | ------------------ |
| entitlement | [Entitlement](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/entitlement) | {entitlement.name} |
| resource    | [Resource](https://docs.blazon.im/administrador/mais-opcoes/beanshell-blazon-api/objetos/resource)       | {resource.id}      |

### Exemplos de expressões

A tabela abaixo ilustra alguns exemplos de expressões comuns:

<table><thead><tr><th>Expressão</th><th width="439">Resultado</th></tr></thead><tbody><tr><td><code>{user.firstName}</code></td><td>Retorna o valor do campo <em>firstName</em> do usuário.</td></tr><tr><td><code>{user.lastName.toUpperCase()}</code></td><td>Retorna o valor do campo <em>lastName</em> do usuário, em letras maiúsculas.</td></tr><tr><td><code>{account.accountIdentifier}</code></td><td>Retorna o valor do campo <em>accountIdentifier</em> da conta.</td></tr><tr><td><code>{account.accountIdentifier}_ID</code></td><td>Retorna o valor do campo <em>accountIdentifier</em> da conta, e concatenado com o termo "_ID".</td></tr><tr><td><code>{user.get('occupationCode')}</code></td><td>Retorna o valor do campo adicional <em>occupationCode</em> do usuário.</td></tr><tr><td><code>{entitlement.name}</code></td><td>Retorna o valor do campo <em>name</em> do direito.</td></tr><tr><td><code>{user.department.name}</code></td><td>Retorna o valor do campo <em>name</em> do departamento do usuário.</td></tr></tbody></table>
