Referência para escrever expressões para mapeamentos de atributos no Microsoft Entra ID
Quando você configura o provisionamento para um aplicativo SaaS, um dos tipos de mapeamentos de atributos que você pode especificar é um mapeamento de expressão. Para esses mapeamentos, você deve escrever uma expressão semelhante a um script que permita transformar os dados dos usuários em formatos mais aceitáveis para o aplicativo SaaS.
Visão geral da sintaxe
A sintaxe para expressões para mapeamentos de atributo é uma reminiscência de funções do Visual Basic for Applications (VBA).
Toda a expressão deve ser definida em termos de funções, que consistem em um nome seguido de argumentos entre parênteses: FunctionName(
<<argument 1>>
,<<argument N>>
)Você pode aninhar funções umas nas outras. Por exemplo: FunctionOne(FunctionTwo(
<<argument1>>
))Você pode passar três tipos diferentes de argumentos para funções:
- Atributos, que devem ser colocados entre colchetes. Por exemplo: [attributeName]
- Constantes de cadeia de caracteres, que devem ser colocadas entre aspas duplas. Por exemplo: "Estados Unidos"
- Outras Funções. Por exemplo: FunctionOne(
<<argument1>>
, FunctionTwo(<<argument2>>
))
Para constantes de cadeia de caracteres, se você precisar de uma barra invertida ( \ ) ou aspas ( " ) na cadeia de caracteres, ela deverá ser escapada com o símbolo de barra invertida ( \ ). Por exemplo: "Nome da empresa: \"Contoso\""
A sintaxe diferencia maiúsculas de minúsculas, o que deve ser considerado ao digitá-las como strings em uma função vs copiar colando-as diretamente daqui.
Lista de funções
AcrescentarAppRoleAssignmentsComplexBitAndCBoolCDateCoalesceConvertToBase64ConvertToUTF8HexCountCStrDateAddDateDiffDateFromNumFormatDateTimeGuidIgnoreFlowIfNullOrEmptyIIFInStrIsNullIsNullOrEmptyIsPresentIsStringItemJoinLeftMidNormalizeDiacriticsNãoAgoraNumFromDatePCaseRandomStringRedactRemoveDuplicatesSubstituirSelectUniqueValueSingleAppRoleAssignmentDividirStripSpacesAlternarparaInferiorpara Superior Palavra
Acrescentar
Função: Append (fonte, sufixo)
Descrição: Usa um valor de cadeia de caracteres de origem e acrescenta o sufixo ao final dela.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
fonte | Necessário | String | Normalmente, o nome do atributo do objeto de origem. |
sufixo | Necessário | String | A cadeia de caracteres que você deseja acrescentar ao final do valor de origem. |
Acrescentar sufixo constante ao nome de usuário
Exemplo: se você estiver usando um Salesforce Sandbox, talvez seja necessário acrescentar outro sufixo a todos os seus nomes de usuário antes de sincronizá-los.
Expression:Append([userPrincipalName], ".test")
Amostra de entrada/saída:
- INPUT: (userPrincipalName): "John.Doe@contoso.com"
- SAÍDA: "John.Doe@contoso.com.test"
AppRoleAssignmentsComplex
Função: AppRoleAssignmentsComplex([appRoleAssignments])
Descrição: Usado para configurar várias funções para um usuário. Para uso detalhado, consulte Tutorial - Personalizar mapeamentos de atributos de provisionamento de usuário para aplicativos SaaS no Microsoft Entra ID.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
[appRoleAssignments] | Necessário | String | [appRoleAssignments] objeto. |
BitAnd
Função: BitAnd(value1, value2)
Descrição: Esta função converte ambos os parâmetros para a representação binária e define um pouco para:
- 0 - se um ou ambos os bits correspondentes em value1 e value2 forem 0
- 1 - se ambos os bits correspondentes forem 1.
Em outras palavras, ele retorna 0 em todos os casos, exceto quando os bits correspondentes de ambos os parâmetros são 1.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
valor1 | Necessário | Número | Valor numérico que deve ser AND'ed com value2 |
valor2 | Necessário | Número | Valor numérico que deve ser AND'ed com value1 |
Exemplo:BitAnd(&HF, &HF7)
11110111 E 00000111 = 00000111 assim BitAnd
retorna 7, o valor binário de 00000111.
CBool
Função:CBool(Expression)
Descrição:CBool
retorna um booleano com base na expressão avaliada. Se a expressão for avaliada como um valor diferente de zero, retornará CBool
True, caso contrário, retornará False.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
Expression | Necessário | expressão | Qualquer expressão válida |
Exemplo:CBool([attribute1] = [attribute2])
Retorna True se ambos os atributos tiverem o mesmo valor.
CDate
Função:
CDate(expression)
Description:
A função CDate retorna um UTC DateTime de uma cadeia de caracteres. DateTime não é um tipo de atributo nativo, mas pode ser usado em funções de data, como FormatDateTime e DateAdd.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
Expression | Necessário | Expression | Qualquer cadeia de caracteres válida que represente uma data/hora. Para obter os formatos suportados, consulte Cadeias de caracteres de formato de data e hora personalizadas do .NET. |
Observações:
A string retornada está sempre em UTC e segue o formato M/d/aa h:mm:ss tt.
Exemplo 1:
CDate([StatusHireDate])
Amostra de entrada/saída:
- ENTRADA (StatusHireDate): "2020-03-16-07:00"
- OUTPUT: "16/03/2020 07:00:00" <-- Observe que o equivalente UTC do DateTime acima é retornado
Exemplo 2:
CDate("2021-06-30+08:00")
Amostra de entrada/saída:
- ENTRADA: "2021-06-30+08:00"
- OUTPUT: "6/29/2021 4:00:00 PM" <-- Observe que o equivalente UTC do DateTime acima é retornado
Exemplo 3:
CDate("2009-06-15T01:45:30-07:00")
Amostra de entrada/saída:
- ENTRADA: "2009-06-15T01:45:30-07:00"
- OUTPUT: "6/15/2009 8:45:30 AM" <-- Observe que o equivalente UTC do DateTime acima é retornado
Coalesce
Função: Coalesce(source1, source2, ..., defaultValue)
Descrição: retorna o primeiro valor de origem que não é NULL. Se todos os argumentos forem NULL e defaultValue estiver presente, o defaultValue será retornado. Se todos os argumentos forem NULL e defaultValue não estiver presente, Coalesce retornará NULL.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
fonte1 ... fonteN | Necessário | String | Obrigatório, número variável de vezes. Normalmente, o nome do atributo do objeto de origem. |
defaultValue | Opcional | String | Valor padrão a ser usado quando todos os valores de origem são NULL. Pode ser string vazia (""). |
Valor de email de fluxo se não NULL, caso contrário, fluxo userPrincipalName
Exemplo: Você deseja fluir o atributo mail se ele estiver presente. Se não estiver, você deseja fluir o valor de userPrincipalName em vez disso.
Expression:Coalesce([mail],[userPrincipalName])
Amostra de entrada/saída:
- INPUT (correio): NULL
- INPUT (userPrincipalName): "John.Doe@contoso.com"
- SAÍDA: "John.Doe@contoso.com"
ConvertToBase64
Função: ConvertToBase64 (fonte)
Descrição: A função ConvertToBase64 converte uma cadeia de caracteres em uma cadeia de caracteres Unicode base64.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
fonte | Necessário | String | String a ser convertida para base 64 |
Exemplo:ConvertToBase64("Hello world!")
Devolve "SABlAGwAbABvACAAdwBvAHIAbABkACEA"
ConvertToUTF8Hex
Função: ConvertToUTF8Hex (fonte)
Descrição: A função ConvertToUTF8Hex converte uma cadeia de caracteres em um valor codificado em UTF8 Hex.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
fonte | Necessário | String | String a ser convertida em UTF8 Hex |
Exemplo:ConvertToUTF8Hex("Hello world!")
Devolve 48656C6C6F20776F726C6421
Count
Função: Contagem(atributo)
Descrição: A função Count retorna o número de elementos em um atributo de vários valores.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
atributo | Necessário | atributo | Atributo de vários valores que tem elementos contados |
CStr
Função: CStr(value)
Descrição: A função CStr converte um valor em um tipo de dados de cadeia de caracteres.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
valor | Necessário | numérico, de referência ou booleano | Pode ser um valor numérico, atributo de referência ou booleano. |
Exemplo:CStr([dn])
Retorna "cn=Joe,dc=contoso,dc=com"
DateAdd
Função:
DateAdd(interval, value, dateTime)
Description:
Retorna uma cadeia de caracteres de data/hora que representa uma data à qual um intervalo de tempo especificado é adicionado. A data de retorno está no formato: M/d/aaaa h:mm:ss tt.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
interval | Necessário | String | Intervalo de tempo que pretende adicionar. Consulte os valores aceitos após esta tabela. |
valor | Necessário | Número | O número de unidades que você deseja adicionar. Pode ser positivo (para obter datas no futuro) ou negativo (para obter datas no passado). |
dateTime | Necessário | DateTime | DateTime que representa a data à qual o intervalo é adicionado. |
Ao passar uma cadeia de caracteres de data como entrada, use a função CDate para encapsular a cadeia de caracteres datetime. Para obter a hora do sistema em UTC, use a função Agora .
A cadeia de caracteres de intervalo deve ter um dos seguintes valores:
- Ano aaaa
- m Mês
- d Dia
- Semana ww
- h Hora
- n Minuto
- s Segundo
Exemplo 1: Gerar um valor de data com base no StatusHireDate de entrada do Workday
DateAdd("d", 7, CDate([StatusHireDate]))
Exemplo | interval | valor | dateTime (valor da variável StatusHireDate) | saída |
---|---|---|---|---|
Adicionar 7 dias à data de contratação | "d" | 7 | 2012-03-16-07:00 | 23/03/2012 07:00:00 |
Obter uma data dez dias antes para a data de contratação | "d" | -10 | 2012-03-16-07:00 | 06/03/2012 07:00:00 |
Adicionar duas semanas à data de contratação | "WW" | 2 | 2012-03-16-07:00 | 30/03/2012 07:00:00 |
Adicionar dez meses à data de contratação | "m" | 10 | 2012-03-16-07:00 | 16/01/2013 07:00:00 |
Adicionar dois anos à data de contratação | "AAAA" | 2 | 2012-03-16-07:00 | 16/03/2014 07:00:00 |
DateDiff
Função:
DateDiff(interval, date1, date2)
Description:
Esta função usa o parâmetro interval para retornar um número que indica a diferença entre as duas datas de entrada. Regressa
- um número positivo se data2 > data1,
- um número negativo se date2 < date1,
- 0 se date2 == date1
Parâmetros:
Nome | Obrigatório/Opcional | Type | Notas |
---|---|---|---|
interval | Necessário | String | Intervalo de tempo a utilizar para calcular a diferença. |
data1 | Necessário | DateTime | DateTime que representa uma data válida. |
data2 | Necessário | DateTime | DateTime que representa uma data válida. |
Ao passar uma cadeia de caracteres de data como entrada, use a função CDate para encapsular a cadeia de caracteres datetime. Para obter a hora do sistema em UTC, use a função Agora .
A cadeia de caracteres de intervalo deve ter um dos seguintes valores:
- Ano aaaa
- m Mês
- d Dia
- Semana ww
- h Hora
- n Minuto
- s Segundo
Exemplo 1: Comparar a data atual com a data de contratação do Workday com intervalos diferentes
DateDiff("d", Now(), CDate([StatusHireDate]))
Exemplo | interval | data1 | data2 | saída |
---|---|---|---|---|
Diferença positiva em dias entre duas datas | d | 2021-08-18+08:00 | 2021-08-31+08:00 | 13 |
Diferença negativa de dias entre duas datas | d | 25/8/2021 17:41:18 | 2012-03-16-07:00 | -3449 |
Diferença de semanas entre duas datas | ww | 25/8/2021 17:41:18 | 2012-03-16-07:00 | -493 |
Diferença de meses entre duas datas | m | 25/8/2021 17:41:18 | 2012-03-16-07:00 | -113 |
Diferença de anos entre duas datas | yyyy | 25/8/2021 17:41:18 | 2012-03-16-07:00 | -9 |
Diferença quando ambas as datas são iguais | d | 2021-08-31+08:00 | 2021-08-31+08:00 | 0 |
Diferença de horas entre duas datas | h | 2021-08-24 | 2021-08-25 | 24 |
Diferença em minutos entre duas datas | n | 2021-08-24 | 2021-08-25 | 1440 |
Diferença em segundos entre duas datas | s | 2021-08-24 | 2021-08-25 | 86400 |
Exemplo 2: Combine DateDiff com a função IIF para definir o valor do atributo
Se uma conta estiver ativa no Workday, defina o atributo accountEnabled do usuário como True somente se a data de contratação estiver dentro dos próximos cinco dias.
Switch([Active], ,
"1", IIF(DateDiff("d", Now(), CDate([StatusHireDate])) > 5, "False", "True"),
"0", "False")
DateFromNum
Função: DateFromNum(value)
Descrição: A função DateFromNum converte um valor no formato de data do AD em um tipo DateTime.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
valor | Necessário | Date | Data do AD a ser convertida para o tipo DateTime |
Exemplo:DateFromNum([lastLogonTimestamp])
DateFromNum(129699324000000000)
Retorna um DateTime representando 1º de janeiro de 2012 às 23h00.
FormatDateTime
Função: FormatDateTime (fonte, dateTimeStyles, inputFormat, outputFormat)
Descrição: Pega uma cadeia de caracteres de data de um formato e a converte em um formato diferente.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
fonte | Necessário | String | Normalmente, o nome do atributo do objeto de origem. |
dateTimeStyles | Opcional | String | Use esse parâmetro para especificar as opções de formatação que personalizam a análise de cadeia de caracteres para alguns métodos de análise de data e hora. Para valores suportados, consulte o documento DateTimeStyles. Se deixado vazio, o valor padrão usado é DateTimeStyles.RoundtripKind, DateTimeStyles.AllowLeadingWhite, DateTimeStyles.AllowTrailingWhite |
inputFormat | Necessário | String | Formato esperado do valor de origem. Para formatos suportados, consulte Cadeias de caracteres de formato de data e hora personalizadas do .NET. |
outputFormat | Necessário | String | Formato da data de saída. |
Data de saída como uma cadeia de caracteres em um determinado formato
Exemplo: você deseja enviar datas para um aplicativo SaaS como o ServiceNow em um determinado formato. Você pode considerar o uso da expressão a seguir.
Expression:
FormatDateTime([extensionAttribute1], , "yyyyMMddHHmmss.fZ", "yyyy-MM-dd")
Amostra de entrada/saída:
- INPUT (extensionAttribute1): "20150123105347.1Z"
- REALIZAÇÃO: "2015-01-23"
GUID
Função: Guid()
Descrição: A função Guid gera um novo GUID aleatório
Exemplo:
Guid()
Saída de exemplo: "00aa00aa-bb11-cc22-dd33-44ee44ee44ee"
IgnoreFlowIfNullOrEmpty
Função: IgnoreFlowIfNullOrEmpty(expressão)
Descrição: A função IgnoreFlowIfNullOrEmpty instrui o serviço de provisionamento a ignorar o atributo e soltá-lo do fluxo se a função ou atributo incluído for NULL ou vazio.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
Expression | Necessário | Expression | Expressão a avaliar |
Exemplo 1: Não fluir um atributo se ele for nulo
IgnoreFlowIfNullOrEmpty([department])
A expressão acima descarta o atributo department do fluxo de provisionamento se ele for nulo ou vazio.
Exemplo 2: Não fluir um atributo se o mapeamento de expressão for avaliado como cadeia de caracteres vazia ou nula
Digamos que o prefixo do atributo SuccessFactors seja mapeado para o atributo personalTitle do Ative Directory local usando o seguinte mapeamento de expressão:
IgnoreFlowIfNullOrEmpty(Switch([prefix], "", "3443", "Dr.", "3444", "Prof.", "3445", "Prof. Dr."))
A expressão acima primeiro avalia a função Switch . Se o atributo prefix não tiver nenhum dos valores listados na função Switch , ** retornará uma cadeia de caracteres vazia e o atributo personalTitle não será incluído no fluxo de provisionamento para o Ative Directory local.
IIF
Função: IIF(condição,valueIfTrue,valueIfFalse)
Descrição: A função IIF retorna um de um conjunto de valores possíveis com base em uma condição especificada.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
condição | Necessário | Variável ou expressão | Qualquer valor ou expressão que possa ser avaliado como verdadeiro ou falso. |
valorSeVerdadeiro | Necessário | Variável ou String | Se a condição for avaliada como true, o valor retornado. |
valorSeFalso | Necessário | Variável ou String | Se a condição for avaliada como false, o valor retornado. |
Os seguintes operadores de comparação podem ser usados na condição:
- Igual a (=) e não igual a (<>)
- Maior que (>) e maior que igual a (>=)
- Inferior a (<) e inferior a igual a (<=)
Exemplo: defina o valor do atributo de destino para o atributo de país de origem se country="USA", caso contrário, defina o valor do atributo de destino para o atributo do departamento de origem.
IIF([country]="USA",[country],[department])
Limitações conhecidas
Esta seção inclui limitações e soluções alternativas para a função IIF. Para obter informações sobre como solucionar problemas de criação de usuários, consulte Falha na criação devido a valores nulos/vazios.
- A função IIF atualmente não suporta operadores lógicos AND e OR.
- Para implementar a lógica AND, use a instrução IIF aninhada encadeada ao longo do caminho trueValue .
Exemplo: Se country="USA" e state="CA", retornar o valor "True", senão retornar "False".
IIF([country]="USA",IIF([state]="CA","True","False"),"False")
- Para implementar a lógica OR, use a instrução IIF aninhada encadeada ao longo do caminho falseValue .
Exemplo: Se country="USA" ou state="CA", retorne o valor "True", caso contrário retorne "False".
IIF([country]="USA","True",IIF([state]="CA","True","False"))
- Se o atributo source usado na função IIF estiver vazio ou nulo, a verificação de condição falhará.
- Exemplos de expressões IIF sem suporte:
IIF([country]="","Other",[country])
IIF(IsNullOrEmpty([country]),"Other",[country])
IIF(IsPresent([country]),[country],"Other")
- Solução recomendada: Use a função Switch para verificar valores vazios/nulos. Exemplo: Se o atributo country estiver vazio, defina o valor "Outro". Se estiver presente, passe o valor do atributo country para o atributo target.
Switch([country],[country],"","Other")
- Exemplos de expressões IIF sem suporte:
InStr
Função: InStr(value1, value2, start, compareType)
Descrição: A função InStr localiza a primeira ocorrência de uma substring em uma string.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
valor1 | Necessário | String | String a ser pesquisada |
valor2 | Necessário | String | String a ser encontrada |
start | Opcional | Número inteiro | Posição inicial para localizar a substring |
compareType | Opcional | Enumeração | Pode ser vbTextCompare ou vbBinaryCompare |
Exemplo:InStr("The quick brown fox","quick")
Avalia até 5
InStr("repEated","e",3,vbBinaryCompare)
Avalia até 7
IsNull
Função: IsNull(Expression)
Descrição: Se a expressão for avaliada como Null, a função IsNull retornará true. Para um atributo, um Null é expresso pela ausência do atributo.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
Expression | Necessário | Expression | Expressão a avaliar |
Exemplo:IsNull([displayName])
Retorna True se o atributo não estiver presente.
IsNullorEmpty
Função: IsNullOrEmpty(Expressão)
Descrição: Se a expressão for nula ou uma cadeia de caracteres vazia, a função IsNullOrEmpty retornará true. Isso avalia como True se o atributo está ausente ou está presente, mas é uma cadeia de caracteres vazia. O inverso desta função é chamado IsPresent.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
Expression | Necessário | Expression | Expressão a avaliar |
Exemplo:IsNullOrEmpty([displayName])
Retorna True se o atributo não estiver presente ou for uma cadeia de caracteres vazia.
IsPresent
Função: IsPresent(Expression)
Descrição: Se a expressão for avaliada como uma cadeia de caracteres que não é Nula e não está vazia, a função IsPresent retornará true. O inverso dessa função é chamado IsNullOrEmpty.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
Expression | Necessário | Expression | Expressão a avaliar |
Exemplo:Switch(IsPresent([directManager]),[directManager], IsPresent([skiplevelManager]),[skiplevelManager], IsPresent([director]),[director])
IsString
Função: IsString(Expression)
Descrição: Se a expressão puder ser avaliada para um tipo de cadeia de caracteres, a função IsString será avaliada como True.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
Expression | Necessário | Expression | Expressão a avaliar |
Item
Função: Item(atributo, índice)
Descrição: A função Item retorna um item de uma cadeia de caracteres/atributo de vários valores.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
atributo | Necessário | Atributo | Atributo de vários valores a ser pesquisado |
índice | Necessário | Número inteiro | Índice para um item na cadeia de caracteres de vários valores |
Exemplo:Item([proxyAddresses], 1)
retorna o primeiro item no atributo de vários valores. O índice 0 não deve ser usado.
Participar
Função: Join(separador, source1, source2, ...)
Descrição: Join() é semelhante a Append(), exceto que ele pode combinar vários valores de cadeia de caracteres de origem em uma única cadeia de caracteres, e cada valor é separado por uma cadeia de caracteres separadora .
Se um dos valores de origem for um atributo de vários valores, todos os valores desse atributo serão unidos, separados pelo valor separador.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
separador | Necessário | String | String usada para separar valores de origem quando eles são concatenados em uma cadeia de caracteres. Pode ser "" se nenhum separador for necessário. |
fonte1 ... fonteN | Número de vezes obrigatório e variável | String | Valores de cadeia de caracteres a serem unidos. |
Left
Função: Esquerda (String, NumChars)
Descrição: A função Left retorna um número especificado de caracteres da esquerda de uma cadeia de caracteres. Se numChars = 0, retorne a cadeia de caracteres vazia. Se numChars 0, retorne a cadeia de < caracteres de entrada. Se string for null, retorne string vazia. Se string contiver menos caracteres do que o número especificado em numChars, uma string idêntica a string (ou seja, contendo todos os caracteres no parâmetro 1) será retornada.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
Cadeia | Obrigatório | Atributo | A cadeia de caracteres para retornar caracteres de |
NumChars | Necessário | Número inteiro | Um número que identifica o número de caracteres a serem retornados do início (à esquerda) da cadeia de caracteres |
Exemplo:Left("John Doe", 3)
Retorna "Joh".
Mid
Função: Meio (fonte, início, comprimento)
Descrição: retorna uma substring do valor de origem. Uma substring é uma cadeia de caracteres que contém apenas alguns dos caracteres da cadeia de caracteres de origem.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
fonte | Necessário | String | Geralmente nome do atributo. |
start | Necessário | Número inteiro | Índice na cadeia de caracteres de origem onde a substring deve começar. O primeiro caractere na cadeia de caracteres tem um índice de 1, o segundo caractere tem um índice 2 e assim por diante. |
length | Necessário | Número inteiro | Comprimento da substring. Se o comprimento terminar fora da cadeia de caracteres de origem, a função retornará a subcadeia do índice inicial até o final da cadeia de caracteres de origem. |
NormalizeDiacritics
Função: NormalizeDiacritics (fonte)
Descrição: Requer um argumento de cadeia de caracteres. Retorna a cadeia de caracteres, mas com quaisquer caracteres diacríticos substituídos por caracteres não diacríticos equivalentes. Normalmente usado para converter nomes e sobrenomes contendo caracteres diacríticos (acentos) em valores legais que podem ser usados em vários identificadores de usuário, como nomes principais de usuário, nomes de contas SAM e endereços de e-mail.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
fonte | Necessário | String | Geralmente um atributo de nome ou sobrenome. |
Personagem com Diacritic | Caráter normalizado | Personagem com Diacritic | Caráter normalizado |
---|---|---|---|
ä, à, â, ã, å, á, ą, ă, ā, ā́, ā̀, ā̂, ā̃, ǟ, ā̈, ǡ, a̱, å̄ | a | Ä, À, Â, Ã, Å, Á, Ą, Ă, Ā, Ā́, Ā̀, Ā̂, Ā̃, Ǟ, Ā̈, Ǡ, A̱, Å̄ | A |
æ, ǣ | AE | Æ, Ǣ | AE |
ç, č, ć, c̄, c̱ | c | Ç, Č, Ć, C̄, C̱ | C |
ď, d̄, ḏ | d | Ď, D̄, Ḏ | D |
ë, è, é, ê, ę, ě, ė, ē, ḗ, ḕ, ē̂, ē̃, ê̄, e̱, ë̄, e̊̄ | e | Ë, È, É, Ê, Ę, Ě, Ė, Ē, Ḗ, Ḕ, Ē̂, Ē̃, Ê̄, E̱, Ë̄, E̊̄ | E |
ğ, ḡ, g̱ | g | Ğ, Ḡ, G̱ | G |
ï, î, ì, í, ı, ī, ī́, ī̀, ī̂, ī̃, i̱ | posso | Ï, Î, Ì, Í, İ, Ī, Ī́, Ī̀, Ī̂, Ī̃, I̱ | I |
ľ, ł, l̄, ḹ, ḻ | l | Ł, Ľ, L̄, Ḹ, Ḻ | L |
ñ, ń, ň, n̄, ṉ | n | Ñ, Ń, Ň, N̄, Ṉ | N |
ö, ò, ő, õ, ô, ó, ō, ṓ, ṑ, ō̂, ō̃, ȫ, ō̈, ǭ, ȭ, ȱ, o̱ | o | Ö, Ò, Ő, Õ, Ô, Ó, Ō, Ṓ, Ṑ, Ō̂, Ō̃, Ȫ, Ō̈, Ǭ, Ȭ, Ȱ, O̱ | O |
ø, ø̄, œ̄ | oe | Ø, Ø̄, Œ̄ | OE |
ř, r̄, ṟ, ṝ | r | Ř, R̄, Ṟ, Ṝ | R |
ß | ss | ||
š, ś, ș, ş, s̄, s̱ | s | Š, Ś, Ș, Ş, S̄, S̱ | S |
ť, ț, t̄, ṯ | t | Ť, Ț, T̄, Ṯ | T |
ü, ù, û, ú, ů, ű, ū, ū́, ū̀, ū̂, ū̃, u̇̄, ǖ, ṻ, ṳ̄, u̱ | S | Ü, Ù, Û, Ú, Ů, Ű, Ū, Ū́, Ū̀, Ū̂, Ū̃, U̇̄, Ǖ, Ṻ, Ṳ̄, U̱ | U |
ÿ, ý, ȳ, ȳ́, ȳ̀, ȳ̃, y̱ | S | Ÿ, Ý, Ȳ, Ȳ́, Ȳ̀, Ȳ̃, Y̱ | Y |
ź, ž, ż, z̄, ẕ | z | Ź, Ž, Ż, Z̄, Ẕ | Z |
Remover diacríticos de uma cadeia de caracteres
Exemplo: substitua caracteres que contenham acentos por caracteres equivalentes que não contenham acentos.
Expressão: NormalizeDiacritics([givenName])
Amostra de entrada/saída:
- INPUT (givenName): "Zoë"
- SAÍDA: "Zoe"
Not
Função: Não (fonte)
Descrição: inverte o valor booleano da fonte. Se o valor de origem for True, retornará False. Caso contrário, retorna True.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
fonte | Necessário | Corda Booleana | Os valores de origem esperados são "True" ou "False". |
Agora
Função: Agora()
Description:
A função Now retorna uma cadeia de caracteres que representa o UTC DateTime atual no formato M/d/aaaa h:mm:ss tt.
Exemplo:Now()
Valor de exemplo retornado 02/07/2021 15:33:38
NumFromDate
Função: NumFromDate(value)
Descrição: A função NumFromDate converte um valor DateTime para o formato do Ative Directory necessário para definir atributos como accountExpires. Use essa função para converter valores DateTime recebidos de aplicativos de RH na nuvem, como Workday e SuccessFactors, em sua representação equivalente do AD.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
valor | Necessário | String | Cadeia de caracteres de data e hora no formato ISO 8601 . Se a variável de data estiver em um formato diferente, use a função FormatDateTime para converter a data para o formato ISO 8601. |
Exemplo:
Exemplo de dia útil: supondo que você queira mapear o atributo ContractEndDate de Workday, que está no formato 2020-12-31-08:00 para o campo accountExpires no AD, veja como você pode usar essa função e alterar o deslocamento de fuso horário para corresponder à sua localidade.
NumFromDate(Join("", FormatDateTime([ContractEndDate], ,"yyyy-MM-ddzzz", "yyyy-MM-dd"), " 23:59:59-08:00"))
Exemplo de SuccessFactors: Supondo que você queira mapear o atributo endDate de SuccessFactors, que está no formato M/d/aa hh:mm:ss tt para o campo accountExpires no AD, veja como você pode usar essa função e alterar o deslocamento de fuso horário para corresponder à sua localidade.
NumFromDate(Join("",FormatDateTime([endDate], ,"M/d/yyyy hh:mm:ss tt","yyyy-MM-dd")," 23:59:59-08:00"))
PCase
Função: PCase (fonte, wordSeparators)
Descrição: A função PCase converte o primeiro caractere de cada palavra em uma cadeia de caracteres em maiúsculas e todos os outros caracteres são convertidos em minúsculas.
Parâmetros:
Nome | Obrigatório/Opcional | Type | Notas |
---|---|---|---|
fonte | Necessário | String | valor de origem para converter em maiúsculas e minúsculas. |
wordSeparadores | Opcional | String | Especifique um conjunto de caracteres que é usado como separadores de palavras (exemplo: " ,-'") |
Observações:
- Se o parâmetro wordSeparators não for especificado, o PCase invocará internamente a função ToTitleCase do .NET para converter a cadeia de caracteres de origem em maiúsculas e minúsculas. A função .NET ToTitleCase suporta um conjunto abrangente de categorias de caracteres Unicode como separadores de palavras.
- Caráter de espaço
- Novo caractere de linha
- Caracteres de controle como CRLF
- Formatar caracteres de controle
- ConectorCaracteres de pontuação como sublinhado
- Caracteres de pontuação de traço como traço e hífen (incluindo caracteres como En Dash, Em Dash, hífen duplo e assim por diante)
- Caracteres OpenPunctuation e ClosePunctuation que ocorrem em pares como parênteses, colchete encaracolado, colchete angular e assim por diante.
- Caracteres InitialQuotePunctuation e FinalQuotePontuação , como aspas simples, aspas duplas e aspas angulares.
- OutrosCaracteres de pontuação como ponto de exclamação, sinal numérico, sinal de porcentagem, e comercial, asterisco, vírgula, ponto final, dois pontos, ponto-e-vírgula e assim por diante.
- Caracteres MathSymbol como sinal de mais, sinal menor que e maior que sinal, linha vertical, til, sinal de igual e assim por diante.
- Caracteres CurrencySymbol como cifrão, centavo, sinal de libra, símbolo de euro e assim por diante.
- Caracteres ModifierSymbol como macron, acentos, pontas de seta e assim por diante.
- Caracteres OtherSymbol como sinal de direitos autorais, sinal de grau, sinal registrado e assim por diante.
- Se o parâmetro wordSeparators for especificado, o PCase usará apenas os caracteres especificados como separadores de palavras.
Exemplo:
Digamos que você esteja adquirindo os atributos firstName e lastName do SAP SuccessFactors e, no RH, ambos os atributos estão em maiúsculas. Usando a função PCase, você pode converter o nome para maiúsculas e minúsculas, como mostrado aqui.
Expression | Entrada | Saída | Notas |
---|---|---|---|
PCase([firstName]) |
firstName = "PABLO GONSALVES (SEGUNDO)" | "Pablo Gonsalves (Segundo)" | Como o parâmetro wordSeparators não é especificado, a função PCase usa o conjunto de caracteres separadores de palavras padrão. |
PCase([lastName]," '-") |
sobrenome = "PINTO-DE'SILVA" | "Pinto-de'Silva" | A função PCase usa caracteres no parâmetro wordSeparators para identificar palavras e transformá-las em maiúsculas e minúsculas . |
PCase(Join(" ",[firstName],[lastName])) |
firstName = GREGORY, lastName = "JAMES" | "Gregório Tiago" | Você pode aninhar a função Join no PCase. Como o parâmetro wordSeparators não é especificado, a função PCase usa o conjunto de caracteres separadores de palavras padrão. |
RandomString
Função: RandomString(Length, MinimumNumbers, MinimumSpecialCharacters, MinimumCapital, MinimumLowerCase, CharactersToAvoid)
Descrição: A função RandomString gera uma string aleatória com base nas condições especificadas. Os caracteres permitidos podem ser identificados aqui.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
Comprimento | Necessário | Número | Comprimento total da cadeia aleatória. Isso deve ser maior ou igual à soma de MinimumNumbers, MinimumSpecialCharacters e MinimumCapital. 256 caracteres máx. |
MínimoNúmeros | Necessário | Número | Números mínimos na cadeia aleatória. |
MinimumSpecialCharacters | Necessário | Número | Número mínimo de caracteres especiais. |
Capital Mínimo | Necessário | Número | Número mínimo de letras maiúsculas na cadeia aleatória. |
MínimoLetras minúsculas | Necessário | Número | Número mínimo de letras minúsculas na cadeia aleatória. |
CaracteresParaEvitar | Opcional | String | Caracteres a serem excluídos ao gerar a cadeia de caracteres aleatória. |
Exemplo 1: - Gere uma string aleatória sem restrições de caracteres especiais: RandomString(6,3,0,0,3)
Gera uma string aleatória com 6 caracteres. A string contém 3 números e 3 caracteres minúsculos (1a73qt).
Exemplo 2: - Gere uma string aleatória com restrições de caracteres especiais: RandomString(10,2,2,2,1,"?,")
Gera uma cadeia de caracteres aleatória com 10 caracteres. A string contém pelo menos 2 números, 2 caracteres especiais, 2 letras maiúsculas, 1 letra minúscula e exclui os caracteres "?" e "," (1@!2BaRg53).
Redação
Função: Redact()
Descrição: A função Redact substitui o valor do atributo pela cadeia de caracteres literal "[Redact]" nos logs de provisionamento.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
Atributo/Valor | Necessário | String | Especifique o atributo ou constante / string para redigir a partir dos logs. |
Exemplo 1: Redigir um atributo: Redact([userPrincipalName])
Remove o userPrincipalName dos logs de provisionamento.
Exemplo 2: Redigir uma cadeia de caracteres: Redact("StringToBeRedacted")
Remove uma cadeia de caracteres constante dos logs de provisionamento.
Exemplo 3: Redigir uma cadeia de caracteres aleatória: Redact(RandomString(6,3,0,0,3))
Remove a cadeia de caracteres aleatória dos logs de provisionamento.
RemoveDuplicates
Função: RemoveDuplicates(attribute)
Descrição: A função RemoveDuplicates usa uma cadeia de caracteres de vários valores e verifique se cada valor é exclusivo.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
atributo | Necessário | Atributo de vários valores | Atributo de vários valores que removeu duplicatas |
Exemplo:RemoveDuplicates([proxyAddresses])
Retorna um atributo proxyAddress limpo onde todos os valores duplicados são removidos.
Replace
Função: Substituir (source, oldValue, regexPattern, regexGroupName, replacementValue, replacementAttributeName, template)
Descrição: substitui valores dentro de uma cadeia de caracteres de maneira que diferencia maiúsculas de minúsculas. A função se comporta de forma diferente dependendo dos parâmetros fornecidos:
Quando oldValue e replacementValue são fornecidos:
- Substitui todas as ocorrências de oldValue na origem por replacementValue
Quando oldValue e template são fornecidos:
- Substitui todas as ocorrências do oldValue no modelo pelo valor de origem
Quando regexPattern e replacementValue são fornecidos:
- A função aplica o regexPattern à cadeia de caracteres de origem e você pode usar os nomes do grupo regex para construir a cadeia de caracteres para replacementValue
Nota
Para saber mais sobre construções de agrupamento regex e subexpressões nomeadas, consulte Agrupando construções em expressões regulares.
Quando regexPattern, regexGroupName, replacementValue são fornecidos:
- A função aplica o regexPattern à cadeia de caracteres de origem e substitui todos os valores correspondentes a regexGroupName por replacementValue
Quando regexPattern, regexGroupName, replacementAttributeName são fornecidos:
- Se source tiver um valor, source será retornado
- Se source não tiver valor, a função aplicará o regexPattern ao replacementAttributeName e retornará o valor correspondente a regexGroupName
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
fonte | Necessário | String | Normalmente, o nome do atributo do objeto de origem . |
oldValue | Opcional | String | Valor a ser substituído na fonte ou modelo. |
regexPattern | Opcional | String | Padrão Regex para o valor a ser substituído na origem. Quando replacementAttributeName é usado, o regexPattern é aplicado para extrair um valor de replacementAttributeName. |
regexGroupName | Opcional | String | Nome do grupo dentro de regexPattern. Quando o nome replacementAttributeName é usado, extraímos o valor do grupo regex nomeado do replacementAttributeName e o retornamos como o valor de substituição. |
substituiçãoValor | Opcional | String | Novo valor para substituir o antigo. |
replacementAttributeName | Opcional | String | Nome do atributo a ser usado para o valor de substituição |
aninhado | Opcional | String | Quando o valor do modelo é fornecido, procuramos oldValue dentro do modelo e o substituímos pelo valor de origem . |
Substituir caracteres usando uma expressão regular
Exemplo 1: Usando oldValue e replacementValue para substituir toda a cadeia de caracteres de origem por outra cadeia de caracteres.
Digamos que o seu sistema de RH tenha um atributo BusinessTitle
. Como parte das recentes mudanças de cargo, sua empresa deseja atualizar qualquer pessoa com o título comercial "Desenvolvedor de Produto" para "Engenheiro de Software".
Nesse caso, você pode usar a seguinte expressão no mapeamento de atributos.
Replace([BusinessTitle],"Product Developer", , , "Software Engineer", , )
- Fonte:
[BusinessTitle]
- oldValue: "Desenvolvedor de produtos"
- replacementValue: "Engenheiro de Software"
- Saída de expressão: Engenheiro de Software
Exemplo 2: Usando oldValue e template para inserir a cadeia de caracteres de origem em outra cadeia de caracteres templatizada .
O parâmetro oldValue é um nome incorreto neste cenário. Na verdade, é o valor que é substituído.
Digamos que você queira sempre gerar ID de login no formato <username>@contoso.com
. Há um atributo source chamado UserID e você deseja que esse valor seja usado para a <username>
parte do ID de login.
Nesse caso, você pode usar a seguinte expressão no mapeamento de atributos.
Replace([UserID],"<username>", , , , , "<username>@contoso.com")
- fonte:
[UserID]
= "jsmith" - oldValue: "
<username>
" - Modelo: "
<username>@contoso.com
" - Saída da expressão: "jsmith@contoso.com"
Exemplo 3: Usando regexPattern e replacementValue para extrair uma parte da cadeia de caracteres de origem e substituí-la por uma cadeia de caracteres vazia ou um valor personalizado criado usando padrões regex ou nomes de grupo regex.
Digamos que você tenha um atributo telephoneNumber
source que tenha componentes country code
e separados por um caractere phone number
de espaço. Por exemplo, +91 9998887777
nesse caso, você pode usar a seguinte expressão no mapeamento de atributos para extrair o número de telefone de 10 dígitos.
Replace([telephoneNumber], , "\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})", , "${phoneNumber}", , )
- fonte:
[telephoneNumber]
= "+91 9998887777" - regexPattern: "
\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})
" - replacementValue: "
${phoneNumber}
" - Saída da expressão: 9998887777
Você também pode usar esse padrão para remover caracteres e recolher uma cadeia de caracteres. Por exemplo, a expressão a seguir remove parênteses, traços e caracteres de espaço na cadeia de caracteres de número móvel e retorna apenas dígitos.
Replace([mobile], , "[()\\s-]+", , "", , )
- Fonte:
[mobile] = "+1 (999) 888-7777"
- regexPattern: "
[()\\s-]+
" - replacementValue: "" (cadeia vazia)
- Saída da expressão: 19998887777
Exemplo 4: Usando regexPattern, regexGroupName e replacementValue para extrair uma parte da cadeia de caracteres de origem e substituí-la por outro valor literal ou cadeia de caracteres vazia.
Digamos que seu sistema de origem tenha um atributo AddressLineData com dois componentes: número da rua e nome da rua. Como parte de uma mudança recente, digamos que o número da rua do endereço foi alterado e você deseja atualizar apenas a parte do número da rua da linha de endereço. Nesse caso, você pode usar a expressão a seguir no mapeamento de atributos para extrair o número da rua.
Replace([AddressLineData], ,"(?<streetNumber>^\\d*)","streetNumber", "888", , )
- fonte:
[AddressLineData]
= "Rua Tremont, 545" - regexPattern: "
(?<streetNumber>^\\d*)
" - regexGroupName: "número da rua"
- replacementValue: "888"
- Saída de expressão: 888 Tremont Street
Aqui está outro exemplo em que o sufixo de domínio de um UPN é substituído por uma cadeia de caracteres vazia para gerar ID de login sem sufixo de domínio.
Replace([userPrincipalName], , "(?<Suffix>@(.)*)", "Suffix", "", , )
- fonte:
[userPrincipalName]
= "jsmith@contoso.com" - regexPattern: "
(?<Suffix>@(.)*)
" - regexGroupName: "Sufixo"
- replacementValue: "" (cadeia vazia)
- Saída de expressão: jsmith
Exemplo 5: Usando regexPattern, regexGroupName e replacementAttributeName para manipular cenários em que o atributo source está vazio ou não tem um valor.
Digamos que seu sistema de origem tenha um atributo phoneNumber. Se phoneNumber estiver vazio, você deseja extrair os 10 dígitos do atributo de número de celular. Nesse caso, você pode usar a seguinte expressão no mapeamento de atributos.
Replace([telephoneNumber], , "\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})", "phoneNumber" , , [mobile], )
- fonte:
[telephoneNumber]
= "" (string vazia) - regexPattern: "
\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})
" - regexGroupName: "TelefoneNúmero"
- replacementAttributeName:
[mobile]
= "+91 8887779999" - Saída da expressão: 8887779999
Exemplo 6: Você precisa encontrar caracteres que correspondam a um valor de expressão regular e removê-los.
Replace([mailNickname], , "[a-zA-Z_]*", , "", , )
- fonte [mailNickname]
- oldValue: "john_doe72"
- replaceValue: ""
- Saída de expressão: 72
SelectUniqueValue
Função: SelectUniqueValue(uniqueValueRule1, uniqueValueRule2, uniqueValueRule3, ...)
Descrição: requer um mínimo de dois argumentos, que são regras de geração de valor exclusivas definidas usando expressões. A função avalia cada regra e, em seguida, verifica o valor gerado quanto à exclusividade no aplicativo/diretório de destino. O primeiro valor único encontrado é o retornado. Se todos os valores já existirem no destino, a entrada será depositada e o motivo será registrado nos logs de auditoria. Não há limite superior para o número de argumentos que podem ser fornecidos.
Esta função deve estar no nível superior e não pode ser aninhada.
Esta função não pode ser aplicada a atributos que têm uma precedência correspondente.
Esta função destina-se apenas a ser usada para criações de entrada. Ao usá-lo com um atributo, defina a propriedade Apply Mapping como Somente durante a criação do objeto.
Esta função é atualmente suportada para utilização com estas aplicações:
- Dia de trabalho para o provisionamento de usuários do Ative Directory
- SuccessFactors para provisionamento de usuários do Ative Directory
- Provisionamento controlado por API para o Ative Directory local
SelectUniqueValue não é suportado para uso com outros aplicativos de provisionamento.
A pesquisa LDAP que a função SelectUniqueValue executa no Ative Directory local não escapa de caracteres especiais como diacríticos. Se você passar uma cadeia de caracteres como "Jéssica Smith" que contém um caractere especial, encontrará erros de processamento. Aninhar a função NormalizeDiacritics como mostrado neste exemplo para normalizar caracteres especiais.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
uniqueValueRule1 ... uniqueValueRuleN | São necessários pelo menos 2, sem limite superior | String | Lista de regras exclusivas de geração de valor a avaliar. |
Gerar valor exclusivo para o atributo userPrincipalName (UPN)
Exemplo: Com base no nome, nome do meio e sobrenome do usuário, você precisa gerar um valor para o atributo UPN e verificar sua exclusividade no diretório AD de destino antes de atribuir o valor ao atributo UPN.
Expression:
SelectUniqueValue(
Join("@", NormalizeDiacritics(StripSpaces(Join(".", [PreferredFirstName], [PreferredLastName]))), "contoso.com"),
Join("@", NormalizeDiacritics(StripSpaces(Join(".", Mid([PreferredFirstName], 1, 1), [PreferredLastName]))), "contoso.com"),
Join("@", NormalizeDiacritics(StripSpaces(Join(".", Mid([PreferredFirstName], 1, 2), [PreferredLastName]))), "contoso.com")
)
Amostra de entrada/saída:
- INPUT (PreferredFirstName): "João"
- INPUT (PreferredLastName): "Smith"
- OUTPUT: "John.Smith@contoso.com" se o valor UPN de John.Smith@contoso.com ainda não existir no diretório
- OUTPUT: "J.Smith@contoso.com" se o valor UPN de John.Smith@contoso.com já existir no diretório
- OUTPUT: "Jo.Smith@contoso.com" se os dois valores UPN acima já existirem no diretório
SingleAppRoleAssignment
Função: SingleAppRoleAssignment([appRoleAssignments])
Descrição: retorna um único appRoleAssignment da lista de todos os appRoleAssignments atribuídos a um usuário para um determinado aplicativo. Essa função é necessária para converter o objeto appRoleAssignments em uma única cadeia de caracteres de nome de função. A prática recomendada é garantir que apenas um appRoleAssignment seja atribuído a um usuário de cada vez. Essa função não é suportada em cenários em que os usuários têm várias atribuições de função de aplicativo.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
[appRoleAssignments] | Necessário | String | [appRoleAssignments] objeto. |
Dividida
Função: Split (fonte, delimitador)
Descrição: Divide uma cadeia de caracteres em uma matriz de vários valores, usando o caractere delimitador especificado.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
fonte | Necessário | String | valor de origem a ser atualizado. |
delimitador | Necessário | String | Especifica o caractere usado para dividir a cadeia de caracteres (exemplo: ",") |
Dividir uma cadeia de caracteres em uma matriz de vários valores
Exemplo: você precisa pegar uma lista delimitada por vírgulas de cadeias de caracteres e dividi-las em uma matriz que possa ser conectada a um atributo de vários valores, como o atributo PermissionSets do Salesforce. Neste exemplo, uma lista de conjuntos de permissões é preenchida em extensionAttribute5 no Microsoft Entra ID.
Expressão: Split([extensionAttribute5], ",")
Amostra de entrada/saída:
- INPUT (extensionAttribute5): "PermissionSetOne, PermissionSetTwo"
- SAÍDA: ["PermissionSetOne", "PermissionSetTwo"]
Espaços StripSpaces
Função: StripSpaces (fonte)
Descrição: Remove todos os caracteres de espaço (" ") da cadeia de caracteres de origem.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
fonte | Necessário | String | valor de origem a ser atualizado. |
Switch
Função: Switch (fonte, defaultValue, key1, value1, key2, value2, ...)
Descrição: Quando o valor de origem corresponde a uma chave, retorna o valor dessa chave. Se o valor de origem não corresponder a nenhuma chave, retornará defaultValue. Os parâmetros chave e de valor devem sempre vir em pares. A função sempre espera um número par de parâmetros. A função não deve ser usada para atributos referenciais, como gerente.
Nota
A função Switch executa uma comparação de cadeia de caracteres que diferencia maiúsculas de minúsculas dos valores de origem e de chave . Se você quiser executar uma comparação que não diferencie maiúsculas de minúsculas, normalize a cadeia de caracteres de origem antes da comparação usando uma função ToLower aninhada e certifique-se de que todas as cadeias de caracteres de tecla usem minúsculas.
Exemplo: Switch(ToLower([statusFlag]), "0", "true", "1", "false", "0")
. Neste exemplo, o atributo statusFlag
source pode ter valores ("True" / "true" / "TRUE"). No entanto, a função Switch sempre o converte em string minúscula "true" antes da comparação com os principais parâmetros.
Atenção
Para o parâmetro source , não use as funções aninhadas IsPresent, IsNull ou IsNullOrEmpty. Em vez disso, use uma cadeia de caracteres vazia literal como um dos valores de chave.
Exemplo: Switch([statusFlag], "Default Value", "true", "1", "", "0")
. Neste exemplo, se o atributo statusFlag
source estiver vazio, a função Switch retornará o valor 0.
Atenção
Problema: o serviço de provisionamento define incorretamente um valor de atributo como null no sistema de destino ao usar uma instrução switch.
Resolução: use uma instrução IIF em vez de uma instrução switch para evitar valores nulos inesperados ou use a função IgnoreFlowIfNullOrEmpty com a instrução switch. Por exemplo, switch([companyName], "External", "Company A", "A", "Company B", "B") deve ser representado como IIF([companyName] = "Company A", "A", IIF([companyName] = "Company B", "B", "External")). Nos casos em que o valor padrão é um atributo, use uma expressão como IgnoreFlowIfNullOrEmpty(switch([companyName], [companyName], "Company A", "A", "Company B", "B")).
Causa raiz: esse problema é específico para cenários em que o Microsoft Entra ID é o sistema de origem e a instrução switch contém um valor padrão.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
fonte | Necessário | String | Valor de origem a ser atualizado. |
defaultValue | Opcional | String | Valor padrão a ser usado quando a origem não corresponde a nenhuma chave. Pode ser string vazia (""). |
key | Necessário | String | Chave para comparar o valor de origem com. |
valor | Necessário | String | Valor de substituição para a origem correspondente à chave. |
Substituir um valor com base em um conjunto predefinido de opções
Exemplo: Defina o fuso horário do usuário com base no código de estado armazenado no ID do Microsoft Entra. Se o código de estado não corresponder a nenhuma das opções predefinidas, use o valor padrão de "Austrália/Sydney".
Expression:Switch([state], "Australia/Sydney", "NSW", "Australia/Sydney","QLD", "Australia/Brisbane", "SA", "Australia/Adelaide")
Amostra de entrada/saída:
- ENTRADA (estado): "QLD"
- SAÍDA: "Austrália/Brisbane"
ToLower
Função: ToLower (fonte, cultura)
Descrição: Usa um valor de cadeia de caracteres de origem e o converte em minúsculas usando as regras de cultura especificadas. Se não houver nenhuma informação de cultura especificada, ela usará a cultura Invariante.
Se você quiser definir os valores existentes no sistema de destino como minúsculas, atualize o esquema para seu aplicativo de destino e defina a propriedade caseExact como 'true' para o atributo no qual você está interessado.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
fonte | Necessário | String | Normalmente, o nome do atributo do objeto de origem |
cultura | Opcional | String | O formato para o nome da cultura baseado no RFC 4646 é languagecode2-country/regioncode2, onde languagecode2 é o código de idioma de duas letras e country/regioncode2 é o código de subcultura de duas letras. Exemplos incluem ja-JP para japonês (Japão) e en-US para inglês (Estados Unidos). Nos casos em que um código de idioma de duas letras não está disponível, um código de três letras derivado da ISO 639-2 é usado. |
Converter o valor userPrincipalName (UPN) gerado em minúsculas
Exemplo: Você gostaria de gerar o valor UPN concatenando os campos de origem PreferredFirstName e PreferredLastName e convertendo todos os caracteres em minúsculas.
ToLower(Join("@", NormalizeDiacritics(StripSpaces(Join(".", [PreferredFirstName], [PreferredLastName]))), "contoso.com"))
Amostra de entrada/saída:
- INPUT (PreferredFirstName): "João"
- INPUT (PreferredLastName): "Smith"
- SAÍDA: "john.smith@contoso.com"
ToUpper
Função: ToUpper (fonte, cultura)
Descrição: Usa um valor de cadeia de caracteres de origem e o converte em maiúsculas usando as regras de cultura especificadas. Se não houver nenhuma informação de cultura especificada, ela usará a cultura Invariante.
Se você quiser definir os valores existentes no sistema de destino como maiúsculas, atualize o esquema para seu aplicativo de destino e defina a propriedade caseExact como 'true' para o atributo no qual você está interessado.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
fonte | Necessário | String | Normalmente, o nome do atributo do objeto de origem. |
cultura | Opcional | String | O formato para o nome da cultura baseado no RFC 4646 é languagecode2-country/regioncode2, onde languagecode2 é o código de idioma de duas letras e country/regioncode2 é o código de subcultura de duas letras. Exemplos incluem ja-JP para japonês (Japão) e en-US para inglês (Estados Unidos). Nos casos em que um código de idioma de duas letras não está disponível, um código de três letras derivado da ISO 639-2 é usado. |
Word
Função: Word (String, WordNumber, Delimiters)
Descrição: A função Word retorna uma palavra contida em uma cadeia de caracteres, com base em parâmetros que descrevem os delimitadores a serem usados e o número da palavra a ser retornado. Cada cadeia de caracteres em cadeia separada por um dos caracteres em delimitadores é identificada como palavras:
Se o número < 1, retorna a cadeia de caracteres vazia. Se string for null, retorna string vazia. Se string contiver menos de palavras numéricas ou string não contiver palavras identificadas por delimitadores, uma string vazia será retornada.
Parâmetros:
Nome | Obrigatório/ Repetindo | Type | Notas |
---|---|---|---|
Cadeia | Obrigatório | Atributo de vários valores | String para retornar uma palavra. |
Número de palavras | Necessário | Número inteiro | Número que identifica qual número de palavra deve retornar |
delimitadores | Necessário | String | Uma cadeia de caracteres que representa o(s) delimitador(es) que deve ser usado para identificar palavras |
Exemplo:Word("The quick brown fox",3," ")
Retorna "marrom".
Word("This,string!has&many separators",3,",!&#")
Devolve "tem".
Exemplos
Esta seção fornece mais exemplos de uso de função de expressão.
Retirar nome de domínio conhecido
Remova um nome de domínio conhecido do e-mail de um usuário para obter um nome de usuário. Por exemplo, se o domínio for "contoso.com", você pode usar a seguinte expressão:
Expression:Replace([mail], "@contoso.com", , ,"", ,)
Amostra de entrada/saída:
- INPUT (correio): "john.doe@contoso.com"
- SAÍDA: "john.doe"
Gerar alias de usuário concatenando partes do nome e sobrenome
Gere um alias de usuário usando as três primeiras letras do primeiro nome do usuário e as cinco primeiras letras do sobrenome do usuário.
Expression:Append(Mid([givenName], 1, 3), Mid([surname], 1, 5))
Amostra de entrada/saída:
- INPUT (givenName): "João"
- INPUT (sobrenome): "Doe"
- SAÍDA: "JohDoe"
Adicione uma vírgula entre o sobrenome e o nome.
Adicione uma vírgula entre o sobrenome e o nome.
Expression:Join(", ", "", [surname], [givenName])
Amostra de entrada/saída:
- INPUT (givenName): "João"
- INPUT (sobrenome): "Doe"
- SAÍDA: "Doe, John"
Gere uma ID para um usuário com base em sua ID de objeto do Microsoft Entra. Remova todas as letras do ID e adicione 1000 no início.
Esta expressão permite gerar um identificador para um usuário que começa com 1000 e provavelmente será exclusivo.
Expressão: Join("", 1000, Replace(ConvertToUTF8Hex([objectId]), , "[a-zA-Z_]*", , "", , ))
Amostra de entrada/saída:
- ENTRADA: "00aa00aa-bb11-cc22-dd33-44ee44ee44ee"
- SAÍDA: "100064303565343762312333930392343435612626135652636136306362633065346234"
Artigos Relacionados
- Automatize o provisionamento/desprovisionamento de usuários para aplicativos SaaS
- Personalizando mapeamentos de atributos para provisionamento de usuários
- Filtros de escopo para provisionamento de usuários
- Usando SCIM para habilitar o provisionamento automático de usuários e grupos do Microsoft Entra ID para aplicativos
- Notificações de provisionamento de conta
- Lista de tutoriais sobre como integrar aplicativos SaaS