Справочник по написанию выражений для сопоставлений атрибутов в идентификаторе Microsoft Entra
При настройке подготовки для приложения SaaS одним из типов сопоставления атрибутов, которые можно указать, является сопоставление выражений. Для этих сопоставлений необходимо написать выражение, похожее на скрипт. Оно позволит вам преобразовать данные пользователей в форматы, более подходящие для приложений SaaS.
Общие сведения о синтаксисе
Синтаксис выражений для сопоставления атрибутов напоминает функции Visual Basic для приложений (VBA).
Все выражение должно определяться функциями, состоящими из имени и следующих за ним в скобках аргументов: FunctionName(
<<argument 1>>
,<<argument N>>
).Вы можете вложить функции друг в друга. Например: FunctionOne(FunctionTwo(
<<argument1>>
))В функцию можно передавать следующие три типа аргументов.
- Атрибуты, которые должны быть заключены в квадратные скобки. Например: [имя_атрибута].
- Строковые константы, которые должны быть заключены в двойные кавычки. Например: "США".
- Другие функции. Например: FunctionOne(
<<argument1>>
, FunctionTwo(<<argument2>>
))
Если в строковых константах необходимо использовать обратную косую черту (\) или кавычки (""), такие символы следует экранировать обратной косой чертой (\). Например: "Company name: \"Contoso\""
Синтаксис чувствителен к регистру, который следует учитывать при вводе строк в функции, если вы копируете их отсюда.
Список функций
AppendAppRoleAssignmentsComplexBitAndCBoolCDateCoalesceConvertToBase64ConvertToUTF8HexCountCStrDateAddDateDiffDateFromNumFormatDateTimeGuidIgnoreFlowIfNullOrEmptyIIFInStrIsNullIsNullOrEmptyIsPresentIsStringItemJoinLeftMidNormalizeDiacriticsNotNowNumFromDatePCaseRandomStringRedactRemoveDuplicatesReplaceSelectUniqueValueSingleAppRoleAssignmentSplitStripSpacesSwitchToLowerToUpperWord
Добавление
Функция: Append(источник, суффикс)
Описание: получает исходное строковое значение и присоединяет к его концу суффикс.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
source | Обязательное поле | Строка | Как правило, имя атрибута из исходного объекта. |
suffix | Обязательное поле | Строка | Строка, которую необходимо присоединить к концу исходного значения. |
Добавление суффикса константы к имени пользователя
Пример. Если вы используете песочницу Salesforce, может потребоваться добавить еще один суффикс ко всем именам пользователей перед синхронизацией.
Выражение:Append([userPrincipalName], ".test")
Пример ввода и вывода:
- Входные данные: (userPrincipalName): "John.Doe@contoso.com"
- Выходные данные: "John.Doe@contoso.com.test"
AppRoleAssignmentsComplex
Функция. AppRoleAssignmentsComplex([appRoleAssignments])
Описание. Используется для настройки нескольких ролей для пользователя. Подробные сведения об использовании см. в руководстве по настройке сопоставлений атрибутов подготовки пользователей для приложений SaaS в идентификаторе Microsoft Entra ID.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
[appRoleAssignments] | Обязательное поле | Строка | Объект [appRoleAssignments]. |
BitAnd
Функция: BitAnd(value1, value2)
Описание: эта функция преобразует оба параметра в двоичное представление и устанавливает для бита следующие значения.
- 0 — если один или оба соответствующих бита в value1 и value2 равны 0;
- 1 — если оба соответствующих бита равны 1.
Другими словами, функция возвращает значение 0 всегда, за исключением случаев, когда соответствующие биты обоих параметров равны 1.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
value1 | Обязательное поле | Num | Числовое значение, которое должно быть добавлено к value2 |
value2 | Обязательное поле | Num | Числовое значение, которое должно быть добавлено к value1 |
Пример:BitAnd(&HF, &HF7)
11110111 AND 00000111 = 00000111, поэтому BitAnd
возвращает 7, двоичное значение 00000111.
CBool
Функция:CBool(Expression)
Описание:CBool
возвращает логическое значение на основе вычисленного выражения. Если выражение преобразуется в ненулевое значение, функция CBool
возвращает значение True; в противном случае она возвращает значение False.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
Выражение | Обязательное поле | выражение | Любое допустимое выражение |
Пример:CBool([attribute1] = [attribute2])
Возвращает значение True, если оба атрибута имеют одинаковое значение.
CDate
Функция:
CDate(expression)
Описание.
Функция CDate возвращает из строки значение даты и времени в формате UTC. DateTime не является собственным типом атрибута, но его можно использовать в функциях дат, таких как FormatDateTime и DateAdd.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
Выражение | Обязательное поле | Expression | Любая допустимая строка, представляющая дату и время. Сведения о поддерживаемых форматах см. в разделе Строки настраиваемых форматов даты и времени .NET. |
Примечания:
Возвращаемая строка всегда содержит время в формате UTC и имеет вид М/д/гггг ч:мм:сс tt.
Пример 1:
CDate([StatusHireDate])
Пример ввода и вывода:
- ВХОДНЫЕ ДАННЫЕ (StatusHireDate): "2020-03-16-07:00"
- ВЫХОДНЫЕ ДАННЫЕ: "3.16.2020 7:00:00 AM" <- Обратите внимание, что возвращается эквивалент UTC указанного выше dateTime.
Пример 2:
CDate("2021-06-30+08:00")
Пример ввода и вывода:
- ВХОДНЫЕ ДАННЫЕ: "2021-06-30+08:00"
- ВЫХОДНЫЕ ДАННЫЕ: "6.29.2021 4:00:00 PM" <- Обратите внимание, что возвращается эквивалент UTC указанного выше dateTime.
Пример 3:
CDate("2009-06-15T01:45:30-07:00")
Пример ввода и вывода:
- ВХОДНЫЕ ДАННЫЕ: "2009-06-15T01:45:30-07:00"
- ВЫХОДНЫЕ ДАННЫЕ: "6.15.2009 8:45:30 AM" <- Обратите внимание, что возвращается эквивалент UTC указанного выше dateTime.
Coalesce
Функция: Coalesce(source1, source2, ..., defaultValue)
Описание. Возвращает первое исходное значение, которое не равно NULL. Если все аргументы имеют значение NULL и defaultValue присутствуют, возвращается значение по умолчанию. Если все аргументы имеют значение NULL и значение по умолчанию отсутствует, Угольсс возвращает ЗНАЧЕНИЕ NULL.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
source1 … sourceN | Обязательное поле | Строка | Обязательно, количество повторов может меняться. Как правило, имя атрибута из исходного объекта. |
defaultValue | Необязательно | Строка | Значение по умолчанию, используемое, если все исходные значения имеют значение NULL. Может быть пустой строкой (""). |
Значение потока сообщений, если не равно NULL; в противном случае значение userPrincipalName потока.
Пример: вы хотите передавать атрибут почты, если он присутствует. Если это не так, вместо этого нужно передавать значение userPrincipalName.
Выражение:Coalesce([mail],[userPrincipalName])
Пример ввода и вывода:
- ВХОДНЫЕ ДАННЫЕ (mail): NULL
- ВХОДНЫЕ ДАННЫЕ: (userPrincipalName): "John.Doe@contoso.com"
- Выходные данные: "John.Doe@contoso.com"
ConvertToBase64
Функция: ConvertToBase64(source)
Описание: функция ConvertToBase64 преобразует строку в формат Юникод в кодировке base64.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
source | Обязательное поле | Строка | Строка для преобразования в кодировку base64 |
Пример:ConvertToBase64("Hello world!")
Возвращает SABlAGwAbABvACAAdwBvAHIAbABkACEA.
ConvertToUTF8Hex
Функция: ConvertToUTF8Hex(source)
Описание: функция ConvertToUTF8Hex преобразует строку в значение в шестнадцатеричной кодировке UTF8.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
source | Обязательное поле | Строка | Строка для преобразования в кодировку UTF8 Hex |
Пример:ConvertToUTF8Hex("Hello world!")
Возвращает 48656C6C6F20776F726C6421.
Count
Функция: Count(attribute)
Описание. Функция Count возвращает количество элементов в многозначном атрибуте.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
атрибут | Обязательное поле | атрибут | Многозначный атрибут с числом элементов |
CStr
Функция: CStr(value)
Описание: функция CStr преобразует значение в строковый тип данных.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
значение | Обязательное поле | числовое значение, ссылочный атрибут или логическое значение | может быть числовым значением, ссылочным атрибутом или логическим значением. |
Пример:CStr([dn])
Возвращает "cn=Joe,dc=contoso,dc=com".
DateAdd
Функция:
DateAdd(interval, value, dateTime)
Описание.
Возвращает строку даты и времени, представляющую дату, к которой добавляется указанный интервал времени. Возвращается дата в формате М/д/гггг ч:мм:сс tt.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
interval | Обязательное поле | Строка | Временной интервал, который требуется добавить. См. принятые значения после этой таблицы. |
значение | Обязательное поле | Число | количество единиц измерения, которое нужно добавить. Это значение может быть положительным (для получения дат в будущем) или отрицательным (для получения дат в прошлом). |
dateTime | Обязательное поле | Дата/время | значение DateTime, представляющее собой дату, к которой добавлен интервал. |
При передаче строки даты в качестве входных данных используйте функцию CDate для упаковки строки datetime. Чтобы получить системное время в формате UTC, используйте функцию Now .
Строка interval должна иметь одно из следующих значений:
- yyyy год
- m месяц
- d день
- ww неделя
- h час
- n минута
- s секунда
Пример 1. Создание значения даты на основе входящих значений StatusHireDate из Workday
DateAdd("d", 7, CDate([StatusHireDate]))
Пример | interval | значение | dateTime (значение переменной StatusHireDate) | output |
---|---|---|---|---|
Добавление 7 дней к дате найма | "d" | 7 | 2012-03-16-07:00 | 23.03.2012 07:00:00 |
Получение даты десять дней до даты найма | "d" | -10 | 2012-03-16-07:00 | 06.03.2012 07:00:00 |
Добавление 2 недель к дате найма | "ww" | 2 | 2012-03-16-07:00 | 30.03.2012 07:00:00 |
Добавление 10 месяцев к дате найма | "m" | 10 | 2012-03-16-07:00 | 16.01.2013 07:00:00 |
Добавление 2 лет к дате найма | "yyyy" | 2 | 2012-03-16-07:00 | 16.03.2014 07:00:00 |
DateDiff
Функция:
DateDiff(interval, date1, date2)
Описание.
Эта функция использует параметр interval для возврата числа, указывающего разницу между двумя входными датами. Возвращается
- положительное число, если date2 > date1,
- отрицательное число, если date2 < date1,
- 0, если date2 == date1
Параметры:
Имя. | Обязательно/Необязательно | Тип | Примечания. |
---|---|---|---|
interval | Обязательное поле | Строка | Интервал времени, используемый для вычисления разницы. |
date1 | Обязательное поле | Дата/время | Значение DateTime, представляющее допустимую дату. |
date2 | Обязательное поле | Дата/время | Значение DateTime, представляющее допустимую дату. |
При передаче строки даты в качестве входных данных используйте функцию CDate для упаковки строки datetime. Чтобы получить системное время в формате UTC, используйте функцию Now .
Строка interval должна иметь одно из следующих значений:
- yyyy год
- m месяц
- d день
- ww неделя
- h час
- n минута
- s секунда
Пример 1. Сравнение текущей даты с датой найма из Workday с разными интервалами
DateDiff("d", Now(), CDate([StatusHireDate]))
Пример | interval | date1 | date2 | output |
---|---|---|---|---|
Положительная разница в днях между двумя датами | d | 2021-08-18+08:00 | 2021-08-31+08:00 | 13 |
Отрицательная разница в днях между двумя датами | d | 8/25/2021 5:41:18 PM | 2012-03-16-07:00 | -3449 |
Разница между двумя датами в неделях | ww | 8/25/2021 5:41:18 PM | 2012-03-16-07:00 | -493 |
Разница между двумя датами в месяцах | m | 8/25/2021 5:41:18 PM | 2012-03-16-07:00 | -113 |
Разница между двумя датами в годах | yyyy | 8/25/2021 5:41:18 PM | 2012-03-16-07:00 | –9 |
Разница, если обе даты совпадают | d | 2021-08-31+08:00 | 2021-08-31+08:00 | 0 |
Разница между двумя датами в часах | ч | 2021-08-24 | 2021-08-25 | 24 |
Разница между двумя датами в минутах | n | 2021-08-24 | 2021-08-25 | 1440 |
Разница между двумя датами в секундах | s | 2021-08-24 | 2021-08-25 | 86400 |
Пример 2. Объединение функции DateDiff с функцией IIF для настройки значения атрибута
Если учетная запись активна в Workday, установите для атрибута accountEnabled пользователя значение True только в том случае, если дата найма находится в пределах следующих 5 дней.
Switch([Active], ,
"1", IIF(DateDiff("d", Now(), CDate([StatusHireDate])) > 5, "False", "True"),
"0", "False")
DateFromNum
Функция: DateFromNum(value)
Описание: функция DateFromNum преобразует значение даты в формате AD в тип DateTime.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
значение | Обязательное поле | Дата | Дата AD для преобразования в тип DateTime |
Пример:DateFromNum([lastLogonTimestamp])
DateFromNum(129699324000000000)
Возвращает значение типа DateTime — 1 января 2012 г., 23:00.
FormatDateTime
Функция: FormatDateTime(source, dateTimeStyles, inputFormat, outputFormat)
Описание: преобразовывает строку даты из одного формата в другой.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
source | Обязательное поле | Строка | Как правило, имя атрибута из исходного объекта. |
dateTimeStyles | Необязательно | Строка | Используйте этот параметр, чтобы указать параметры форматирования, которые настраивают синтаксический анализ строк для некоторых методов синтаксического анализа даты и времени. Поддерживаемые значения см. в документе DateTimeStyles doc. Если это поле оставить пустым, значением по умолчанию будет DateTimeStyles.RoundtripKind, DateTimeStyles.AllowLeadingWhite, DateTimeStyles.AllowTrailingWhite. |
входной_формат | Обязательное поле | Строка | Предполагаемый формат исходного значения. Сведения о поддерживаемых форматах см. в разделе Строки настраиваемых форматов даты и времени .NET. |
outputFormat | Обязательное поле | Строка | Формат вывода даты. |
Вывод даты в виде строки в определенном формате
Пример: вы хотите отправить даты в приложение SaaS, например ServiceNow, в определенном формате. Можно использовать следующее выражение.
Выражение:
FormatDateTime([extensionAttribute1], , "yyyyMMddHHmmss.fZ", "yyyy-MM-dd")
Пример ввода и вывода:
- ВВОД : (extensionAttribute1): "20150123105347.1Z"
- Выходные данные: "2015-01-23"
GUID
Функция: Guid()
Описание: функция Guid создает случайный идентификатор GUID.
Пример:
Guid()
Пример выходных данных: "00aa00aa-bb11-cc22-dd33-44ee4ee4ee44ee4ee4ee"
IgnoreFlowIfNullOrEmpty
Функция. IgnoreFlowIfNullOrEmpty(выражение)
Описание. Функция IgnoreFlowIfNullOrEmpty указывает службе подготовки на необходимость игнорировать атрибут и удалить его из потока в том случае, если вложенные функция или атрибут имеют значение NULL или пусты.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
Выражение | Обязательное поле | Expression | Выражение, которое нужно вычислить |
Пример 1. Не перетекайте атрибут, если он имеет значение NULL
IgnoreFlowIfNullOrEmpty([department])
Приведенное выше выражение удаляет атрибут отдела из потока подготовки, если оно равно null или пусто.
Пример 2. Атрибут не включается в поток, если в результате сопоставления выражения возвращается пустая строка или значение NULL
Предположим, префикс атрибута SuccessFactors сопоставляется с атрибутом локальная служба Active Directory personalTitle с помощью следующего сопоставления выражений:
IgnoreFlowIfNullOrEmpty(Switch([prefix], "", "3443", "Dr.", "3444", "Prof.", "3445", "Prof. Dr."))
Приведенное выше выражение сначала рассчитывает функцию Switch. Если атрибут префикса не содержит ни одного из значений, перечисленных в функции Switch, то ** возвращает пустую строку, а личныйTitle атрибута не включен в поток подготовки к локальная служба Active Directory.
IIF
Функция: IIF(condition,valueIfTrue,valueIfFalse)
Описание: функция IIF возвращает одно из набора возможных значений на основе заданного условия.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
условие | Обязательное поле | Переменная или выражение | Любое значение или выражение, которое можно оценить как true, так и false. |
valueIfTrue | Обязательное поле | Переменная или строка | возвращаемое значение, если условие принимает значение true. |
valueIfFalse | Обязательное поле | Переменная или строка | возвращаемое значение, если условие принимает значение false. |
В значении condition можно использовать следующие операторы сравнения:
- равно (=) и не равно (<>);
- больше (>) и больше или равно (>=);
- меньше (<) и меньше или равно (<=).
Пример. Для целевого атрибута задается значение атрибута исходной страны, если country имеет значение "USA",или значение атрибута исходного отдела в противном случае.
IIF([country]="USA",[country],[department])
Известные ограничения
В этом разделе содержатся ограничения и обходные пути для функции IIF. Сведения об устранении неполадок при создании пользователей см. в разделе "Создание" сбоем из-за значений NULL или пустых значений.
- В настоящее время функция IIF не поддерживает логические операторы AND и OR.
- Для реализации логики AND используйте вложенную инструкцию IIF, связанную по пути trueValue.
Пример. Если country имеет значение "США", а state имеет значение "CA", то возвращается значение "true", а в противном случае возвращается значение "false".
IIF([country]="USA",IIF([state]="CA","True","False"),"False")
- Для реализации логики OR используйте вложенную инструкцию IIF, связанную по пути falseValue.
Пример. Если country имеет значение "США" или state имеет значение "CA", то возвращается значение "true", а в противном случае возвращается значение "false".
IIF([country]="USA","True",IIF([state]="CA","True","False"))
- Если исходный атрибут, используемый в функции IIF, пуст или имеет значение NULL, проверка условия завершается ошибкой.
- Неподдерживаемые примеры выражений IIF:
IIF([country]="","Other",[country])
IIF(IsNullOrEmpty([country]),"Other",[country])
IIF(IsPresent([country]),[country],"Other")
- Рекомендуемое решение: используйте функцию Switch, чтобы проверить наличие пустых значений и значений NULL. Пример. Если атрибут country пуст, ему присваивается значение "Other". Если он присутствует, передайте значение атрибута страны целевому атрибуту.
Switch([country],[country],"","Other")
- Неподдерживаемые примеры выражений IIF:
InStr
Функция: InStr(value1, value2, start, compareType)
Описание. Функция InStr находит первое вхождение подстроки в строке.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
value1 | Обязательное поле | Строка | Строка, в которой выполняется поиск |
value2 | Обязательное поле | Строка | Строка для поиска |
Начало | Необязательно | Целое | Начальная позиция для поиска подстроки |
compareType | Необязательно | Перечисление | Возможные значения: vbTextCompare или vbBinaryCompare |
Пример:InStr("The quick brown fox","quick")
Принимает значение 5
InStr("repEated","e",3,vbBinaryCompare)
Принимает значение 7.
IsNull
Функция: IsNull(Expression)
Описание: функция IsNull возвращает значение True, если выражение принимает значение NULL. Значение NULL для атрибута выражается в отсутствии атрибута.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
Выражение | Обязательное поле | Expression | Выражение, которое нужно вычислить |
Пример:IsNull([displayName])
Возвращает значение True, если атрибут отсутствует.
IsNullorEmpty
Функция: IsNullOrEmpty(Expression)
Описание: функция IsNullOrEmpty возвращает значение True, если выражение имеет значение NULL или является пустой строкой. Это значение имеет значение True, если атрибут отсутствует или присутствует, но является пустой строкой. Обратной функцией этой функции является IsPresent.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
Выражение | Обязательное поле | Expression | Выражение, которое нужно вычислить |
Пример:IsNullOrEmpty([displayName])
Возвращает значение True, если атрибут отсутствует или является пустой строкой.
IsPresent
Функция: IsPresent(Expression)
Описание. Если выражение вычисляется в строке, которая не имеет значения NULL и не пуста, функция IsPresent возвращает значение true. Обратной функцией этой функции является IsNullOrEmpty.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
Выражение | Обязательное поле | Expression | Выражение, которое нужно вычислить |
Пример:Switch(IsPresent([directManager]),[directManager], IsPresent([skiplevelManager]),[skiplevelManager], IsPresent([director]),[director])
IsString
Функция: IsString(Expression)
Описание: функция IsString возвращает значение True, если выражение может принимать значение строкового типа.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
Выражение | Обязательное поле | Expression | Выражение, которое нужно вычислить |
Товар
Функция: Item(attribute, index)
Описание: функция Item возвращает один элемент из строки или атрибута с несколькими значениями.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
атрибут | Обязательное поле | Атрибут | Многозначный атрибут, в котором выполняется поиск |
index | Обязательное поле | Целое | Индекс для элемента в многозначной строке |
Пример:Item([proxyAddresses], 1)
возвращает первый элемент в многозначном атрибуте. Индекс 0 не должен использоваться.
Присоединиться
Функция: Join(separator, source1, source2, …)
Описание: Join() похож на Append(), за исключением того, что он может объединить несколько исходных строк в одну строку, и каждое значение разделено строкой разделителя .
Если одно из исходных значений является атрибутом с несколькими значениями, то каждое значение в этом атрибуте объединяется вместе, разделенное значением разделителя.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
separator | Обязательное поле | Строка | Строка, используемая для разделения исходных значений, когда они объединяются в одну строку. Если разделитель не требуется, может не иметь значения (""). |
source1 … sourceN | Обязательно, количество повторов может меняться. | Строка | Строковые значения для объединения. |
Left
Функция: Left(String, NumChars)
Описание: функция Left возвращает указанное количество символов из левой части строки. если numChars = 0, возвращается пустая строка; если numChars < 0, возвращается введенная строка; если строка имеет значение Null, возвращается пустая строка. Если строка содержит меньше символов, чем указано в numChars, возвращается строка без изменений (т. е. содержащая все символы в параметре 1).
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
String | Обязательное поле | Атрибут | Строка, из которой нужно возвращать символы |
NumChars | Обязательное поле | Целое | Количество возвращаемых символов, начиная с начала (левого края) исходной строки |
Пример:Left("John Doe", 3)
Возвращает значение Joh.
Mid
Функция: Mid(source, start, length)
Описание: возвращает подстроку исходного значения. Подстрокой является строка, содержащая только некоторые символы из исходной строки.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
source | Обязательное поле | Строка | Как правило, имя атрибута. |
Начало | Обязательное поле | Целое | Индекс положения в строке source, откуда должна начинаться подстрока. Первый символ в строке имеет индекс 1, второй символ имеет индекс 2 и т. д. |
length | Обязательное поле | Целое | Длина подстроки. Если длина заканчивается вне исходной строки, функция возвращает подстроку из начального индекса до конца исходной строки. |
NormalizeDiacritics
Функция: NormalizeDiacritics(source)
Описание: требует один строковый аргумент. Возвращает строку, но с любыми диакритических символами, замененными эквивалентными недиакритическими символами. Обычно используется для преобразования имен и фамилий с диакритическими знаками в допустимые значения, которые могут использоваться в различных идентификаторах пользователя, таких как имена участников-пользователей, имена учетных записей SAM и адреса электронной почты.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
source | Обязательное поле | Строка | Обычно атрибут имени или фамилии. |
Символ с диакритическим знаком | Нормализованный символ | Символ с диакритическим знаком | Нормализованный символ |
---|---|---|---|
ä, à, â, ã, å, á, ą, ă, ā, ā́, ā̀, ā̂, ā̃, ǟ, ā̈, ǡ, 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̱ | i | Ï, Î, Ì, Í, İ, Ī, Ī́, Ī̀, Ī̂, Ī̃, 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̱ | u | Ü, Ù, Û, Ú, Ů, Ű, Ū, Ū́, Ū̀, Ū̂, Ū̃, U̇̄, Ǖ, Ṻ, Ṳ̄, U̱ | U |
ÿ, ý, ȳ, ȳ́, ȳ̀, ȳ̃, y̱ | г | Ÿ, Ý, Ȳ, Ȳ́, Ȳ̀, Ȳ̃, Y̱ | Y |
ź, ž, ż, z̄, ẕ | z | Ź, Ž, Ż, Z̄, Ẕ | Z |
Удаление диакритических знаков из строки
Пример: замена символов с диакритическими знаками эквивалентами без диакритических знаков.
Выражение: NormalizeDiacritics([givenName])
Пример ввода и вывода:
- ВВОД (givenName): "Zoë"
- ВЫХОДНЫЕ ДАННЫЕ: "Zoe"
Not
Функция: Not(source)
Описание: обращает логическое значение source. Если значение source имеет значение true, возвращается значение false. В противном случае возвращает значение true.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
source | Обязательное поле | Логическая строка | Предполагаемые значения source: True или False. |
Сейчас
Функция. Now()
Описание.
Функция Now возвращает текущие дату и время в формате UTC в виде строки формата М/д/гггг ч:мм:сс tt.
Пример:Now()
Пример возвращаемого значения: 7/2/2021 3:33:38 PM
NumFromDate
Функция: NumFromDate(value)
Описание: функция NumFromDate преобразует значение DateTime в формат Active Directory, необходимый для задания таких атрибутов, как accountExpires. Эта функция используется для преобразования значений DateTime, полученных из облачных приложений для управления кадрами, таких как Workday и SuccessFactors, в эквивалентное представление AD.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
значение | Обязательное поле | Строка | Строка времени даты в формате ISO 8601 . Если переменная даты находится в другом формате, используйте функцию FormatDateTime для преобразования даты в формат ISO 8601. |
Пример:
Пример Workday: предположим, что вы хотите сопоставить атрибут ContractEndDate из Workday, который находится в формате 2020-12-31-08:00 с полем accountExpires в AD, вот как можно использовать эту функцию и изменить смещение часового пояса в соответствии с языковым стандартом.
NumFromDate(Join("", FormatDateTime([ContractEndDate], ,"yyyy-MM-ddzzz", "yyyy-MM-dd"), " 23:59:59-08:00"))
Пример SuccessFactors: если вы хотите сопоставить атрибут endDate from SuccessFactors, который находится в формате M/d/yyy hh:mm:ss tt с полем accountExpires в AD, вот как можно использовать эту функцию и изменить смещение часового пояса в соответствии с языковым стандартом.
NumFromDate(Join("",FormatDateTime([endDate], ,"M/d/yyyy hh:mm:ss tt","yyyy-MM-dd")," 23:59:59-08:00"))
PCase
Функция: PCase(source, wordSeparators)
Описание. Функция PCase преобразовывает в верхний регистр первый символ каждого слова, а все остальные символы преобразовываются в нижний регистр.
Параметры:
Имя. | Обязательно/Необязательно | Тип | Примечания. |
---|---|---|---|
source | Обязательное поле | Строка | source: значение для преобразования в значение, где первая буква каждого слова — прописная, а остальные — строчные. |
wordSeparators | Необязательно | Строка | Укажите набор символов, используемых в качестве разделителей слов (например: ",-") |
Примечания:
- Если параметр wordSeparators не указан, PCase внутренне вызывает функцию .NET ToTitleCase для преобразования исходной строки в правильный регистр. Функция .NET ToTitleCase поддерживает обширный набор категорий символов Юникода в качестве разделителей слов.
- Символ пробела
- Символ новой строки
- Символы Control, например CRLF.
- Управляющие символы Format.
- Символы ConnectorPunctuation, такие как символ подчеркивания.
- Символы dashpunctuation , такие как дефис и дефис (включая такие символы, как En Dash, Em Dash, двойной дефис и т. д.)
- Символы openPunctuation и ClosePunctuation, которые происходят в парах, таких как скобки, фигурная скобка, угловая скобка и т. д.
- Символы препинания InitialQuotePunctuation и FinalQuotePunctuation, такие как одинарные кавычки, двойные кавычки и угловые кавычки.
- Другие знаки препинания , такие как восклицательный знак, знак числа, знак процента, амперсанд, звездочка, запятая, полная остановка, двоеточие, точка с запятой и т. д.
- Математические символы, такие как знак плюса, меньше и больше знака, вертикальная линия, тильда, знак равенства и т. д.
- Символы currencySymbol , такие как знак доллара, знак цента, знак фунта, знак евро и т. д.
- МодификаторыSymbol , такие как макрон, акценты, головки со стрелками и т. д.
- Другие символы, такие как знак авторских прав, знак степени, зарегистрированный знак и т. д.
- Если указан параметр wordSeparators, PCase использует только символы, указанные в качестве разделителей слов.
Пример:
Предположим, что вы используете атрибуты firstName и lastName из SAP SuccessFactors и в hr оба этих атрибута находятся в верхнем регистре. С помощью функции PCase можно преобразовать имя в правильный случай, как показано здесь.
Expression | Входные данные | Выходные данные | Примечания. |
---|---|---|---|
PCase([firstName]) |
firstName = "PABLO GONSALVES (SECOND)" | "Pablo Gonsalves (Second)" | Так как параметр wordSeparators не указан, функция PCase использует набор символов разделителей слов по умолчанию. |
PCase([lastName]," '-") |
lastName = "PINTO-DE'SILVA" | "Pinto-De'Silva" | Функция PCase использует символы, заданные в параметре wordSeparators, для обнаружения слов и преобразования их в правильный регистр. |
PCase(Join(" ",[firstName],[lastName])) |
firstName = GREGORY, lastName = "JAMES" | "Gregory James" | Функцию Join можно вложить в PCase. Так как параметр wordSeparators не указан, функция PCase использует набор символов разделителей слов по умолчанию. |
RandomString
Функция: RandomString(Length, MinimumNumbers, MinimumSpecialCharacters, MinimumCapital, MinimumLowerCase, CharactersToAvoid)
Описание. Функция RandomString создает случайную строку на основе указанных условий. Допустимые символы можно определить здесь.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
Длина | Обязательное поле | Число | Общая длина случайной строки. Она должна быть больше или равна сумме значений MinimumNumbers, MinimumSpecialCharacters и MinimumCapital. Максимальное число символов: 256. |
MinimumNumbers | Обязательное поле | Число | Минимальное число цифр в случайной строке. |
MinimumSpecialCharacters | Обязательное поле | Число | Минимальное число специальных знаков. |
MinimumCapital | Обязательное поле | Число | Минимальное число прописных букв в случайной строке. |
MinimumLowerCase | Обязательное поле | Число | Минимальное число строчных букв в случайной строке. |
CharactersToAvoid | Необязательно | Строка | Символы, исключаемые при формировании случайной строки. |
Пример 1. Создание случайной строки без специальных ограничений символов: RandomString(6,3,0,0,3)
Создает случайную строку с 6 символами. Строка содержит 3 цифры и 3 символа в нижнем регистре (1a73qt).
Пример 2. Создание случайной строки с особыми ограничениями символов: RandomString(10,2,2,2,1,"?,")
Создает случайную строку с 10 символами. Строка содержит по крайней мере 2 цифры, 2 специальных знака, 2 прописные буквы, 1 строчную букву и не может содержать знаки "?" и "," (1@!2BaRg53).
Redact
Функция: Redact()
Описание: функция Redact заменяет значение атрибута строковым литералом "[Redact]" в журналах подготовки.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
attribute/value | Обязательное поле | Строка | Укажите атрибут либо константу или строку для изменения из журналов. |
Пример 1. Редакт атрибута:Redact([userPrincipalName])
Удаляет userPrincipalName из журналов подготовки.
Пример 2. Redact a string:Redact("StringToBeRedacted")
Удаляет константную строку из журналов подготовки.
Пример 3. Изменение случайной строки:Redact(RandomString(6,3,0,0,3))
Удаляет случайную строку из журналов подготовки.
RemoveDuplicates
Функция: RemoveDuplicates(attribute)
Описание: функция RemoveDuplicates принимает строку с несколькими значениями и проверяет, чтобы каждое значение было уникальным.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
атрибут | Обязательное поле | Многозначный атрибут | Многозначный атрибут, удаляющий дубликаты |
Пример.RemoveDuplicates([proxyAddresses])
Возвращает атрибут sanitized proxyAddress, где удаляются все повторяющиеся значения.
Replace
Функция: Replace(source, oldValue, regexPattern, regexGroupName, replacementValue, replacementAttributeName, template)
Описание: заменяет значения в строке с учетом регистра. Работа функции зависит от указанных параметров.
Если указаны параметры oldValue и replacementValue:
- Заменяет все вхождения параметра oldValue в source параметром replacementValue.
Если указаны параметры oldValue и template:
- заменяет все экземпляры oldValue в template значением source.
Если указаны параметры regexPattern и replacementValue:
- функция применяет параметр regexPattern к строке source и вы можете использовать имена групп регулярных выражений для создания строки для параметра replacementValue.
Примечание.
Дополнительные сведения о конструкциях группировки регулярных выражений и именованных частях выражения см. в статье Конструкции группировки в регулярных выражениях.
Если указаны параметры regexPattern, regexGroupName, replacementValue:
- функция применяет параметр regexPattern к строке source и заменяет все значения, соответствующие параметру regexGroupName, на replacementValue.
Если указаны параметры regexPattern, regexGroupName, replacementAttributeName:
- Если для source задано значение, возвращается source.
- Если для source не задано значение, функция применяет параметр regexPattern к replacementAttributeName и возвращает значение, соответствующее regexGroupName.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
source | Обязательное поле | Строка | Как правило, имя атрибута из объекта source. |
oldValue | Необязательно | Строка | Значение для замены в source или template. |
regexPattern | Необязательно | Строка | Шаблон регулярного выражения для значения, заменяемого в source. При использовании replacementPropertyName, параметр regexPattern применяется для извлечения значения из replacementAttributeName. |
regexGroupName | Необязательно | Строка | Имя группы в regexPattern. При использовании именованного имениAttributeName мы извлекаем значение именованной группы regex из заменыAttributeName и возвращаем его в качестве значения замены. |
значение_замены | Необязательно | Строка | Новое значение для замены старого. |
replacementAttributeName | Необязательно | Строка | Имя атрибута, используемого для значения замены. |
веб-сайта | Необязательно | Строка | Если указано значение шаблона, мы ищем старое значение в шаблоне и замените его исходным значением. |
Замените символы с помощью регулярного выражения
Пример 1. Использование oldValue и replacementValue для замены всей исходной строки другой строкой.
Предположим, что система управления кадрами имеет атрибут BusinessTitle
. В рамках недавних изменений должностей компании требуется, чтобы название должности Product Developer было заменено названием Software Engineer.
В этом случае можно использовать приведенное ниже значение в сопоставлении атрибутов.
Replace([BusinessTitle],"Product Developer", , , "Software Engineer", , )
- source:
[BusinessTitle]
- oldValue: "Product Developer"
- replacementValue: "Software Engineer"
- Выходные данные выражения: Software Engineer
Пример 2. Использование oldValue и шаблона для вставки исходной строки в другую шаблонную строку.
В этом сценарии название параметра oldValue будет не совсем подходящим. На самом деле это значение, которое заменяется.
Предположим, что вы хотите всегда создавать идентификатор входа в формате <username>@contoso.com
. Существует исходный атрибут UserID , и вы хотите, чтобы это значение использовалось для <username>
части идентификатора входа.
В этом случае можно использовать приведенное ниже значение в сопоставлении атрибутов.
Replace([UserID],"<username>", , , , , "<username>@contoso.com")
- source:
[UserID]
= "jsmith" - oldValue: "
<username>
" - шаблон: "
<username>@contoso.com
" - Выходные данные выражения: "jsmith@contoso.com"
Пример 3. Использование regexPattern и replacementValue для извлечения части исходной строки и замены ее пустой строкой или пользовательским значением, созданным с помощью шаблонов регулярных выражений или имен групп регулярных выражений.
Предположим, у вас есть исходный атрибут telephoneNumber
, содержащий компоненты country code
и phone number
, разделенные пробелом. Например, +91 9998887777
в этом случае можно использовать следующее выражение в сопоставлении атрибутов, чтобы извлечь номер телефона из 10 цифр.
Replace([telephoneNumber], , "\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})", , "${phoneNumber}", , )
- source:
[telephoneNumber]
= "+91 9998887777" - regexPattern: "
\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})
" - replacementValue: "
${phoneNumber}
" - Выходные данные выражения: 9998887777
Этот шаблон также можно использовать для удаления символов и сворачивания строки. Например, следующее выражение удаляет скобки, дефисы и пробелы в строке мобильного номера и возвращает только цифры.
Replace([mobile], , "[()\\s-]+", , "", , )
- source:
[mobile] = "+1 (999) 888-7777"
- regexPattern: "
[()\\s-]+
" - replacementValue: "" (пустая строка)
- Выходные данные выражения: 19998887777
Пример 4. Использование regexPattern, regexGroupName и replacementValue для извлечения части исходной строки и замены ее другим литеральным значением или пустой строкой.
Предположим, что исходная система имеет атрибут AddressLineData с двумя компонентами: номер дома и название улицы. В рамках недавнего перемещения предположим, что номер улицы изменен, и вы хотите обновить только часть номера улицы в адресной строке. В этом случае можно использовать приведенное ниже выражение в сопоставлении атрибутов, чтобы извлечь номер улицы.
Replace([AddressLineData], ,"(?<streetNumber>^\\d*)","streetNumber", "888", , )
- источник:
[AddressLineData]
= "545 Тремонт-стрит" - regexPattern: "
(?<streetNumber>^\\d*)
" - regexGroupName: "streetNumber"
- replacementValue: "888"
- Выходные данные выражения: 888 Tremont Street
Ниже приведен еще один пример, в котором суффикс домена из имени участника-пользователя заменяется пустой строкой для создания идентификатора входа без суффикса домена.
Replace([userPrincipalName], , "(?<Suffix>@(.)*)", "Suffix", "", , )
- source:
[userPrincipalName]
= "jsmith@contoso.com" - regexPattern: "
(?<Suffix>@(.)*)
" - regexGroupName: "Suffix"
- replacementValue: "" (пустая строка)
- Выходные данные выражения: jsmith
Пример 5. Использование regexPattern, regexGroupName и replacementAttributeName для реализации сценариев, когда исходный атрибут пуст или не имеет значения.
Допустим, что исходная система имеет атрибут telephoneNumber. Если telephoneNumber является пустым, необходимо извлечь 10 цифр из атрибута номера мобильного телефона. В этом случае можно использовать приведенное ниже значение в сопоставлении атрибутов.
Replace([telephoneNumber], , "\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})", "phoneNumber" , , [mobile], )
- source:
[telephoneNumber]
= "" (пустая строка) - regexPattern: "
\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})
" - regexGroupName: "phoneNumber"
- replacementAttributeName:
[mobile]
= "+91 8887779999" - Выходные данные выражения: 8887779999
Пример 6. Необходимо определить символы, соответствующие значению регулярного выражения, и удалить их.
Replace([mailNickname], , "[a-zA-Z_]*", , "", , )
- source [mailNickname]
- oldValue: "john_doe72"
- replaceValue: ""
- Выходные данные выражения: 72
SelectUniqueValue
Функция: SelectUniqueValue(uniqueValueRule1, uniqueValueRule2, uniqueValueRule3, …)
Описание: требует как минимум двух аргументов, которые являются правилами формирования уникальных значений, определенными с помощью выражений. Функция вычисляет каждое правило, а затем проверяет сформированное значение на уникальность в целевом приложении/каталоге. Первое уникальное значение, найденное, является возвращенным. Если все значения уже существуют в целевом объекте, запись будет депонирована, а причина регистрируется в журналах аудита. Нет верхней границы к числу аргументов, которые можно указать.
Эта функция должна находиться на верхнем уровне и не может быть вложена.
Эту функцию нельзя применить к атрибутам, имеющим соответствующий приоритет.
Эта функция предназначена только для создания записей. При использовании ее с атрибутом задайте для свойства Apply Mapping (Применить сопоставление) значение Только в ходе создания объектов.
Эта функция в настоящее время поддерживается для использования с этими приложениями:
- Подготовка пользователей из Workday в Azure Active Directory
- Подготовка пользователей из SuccessFactors в Active Directory
- Подготовка на основе API для локальная служба Active Directory
SelectUniqueValue не поддерживается для использования с другими приложениями подготовки.
Поиск LDAP, выполняющий функцию SelectUniqueValue в локальная служба Active Directory, не экранирует специальные символы, такие как диакритические. Если передать строку, например Jéssica Smith, содержащую специальный символ, вы столкнетесь с ошибками обработки. Вложена функция NormalizeDiacritics , как показано в этом примере для нормализации специальных символов.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
uniqueValueRule1 … uniqueValueRuleN | Требуется не менее 2, нет верхней границы | Строка | Список правил формирования уникальных значений для оценки. |
Создание уникального значения для атрибута userPrincipalName (имя участника-пользователя)
Пример: на основе имени, отчества и фамилии пользователя необходимо создать значение для атрибута имени участника-пользователя и проверить его на уникальность в целевом каталоге AD перед присвоением этого значения атрибуту имени участника-пользователя.
Выражение:
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")
)
Пример ввода и вывода:
- Входные данные (предпочитаемое имя): "John".
- Входные данные (предпочитаемая фамилия): "Smith".
- Выходные данные: "John.Smith@contoso.com", если значение имени участника-пользователя John.Smith@contoso.com еще не существует в каталоге.
- Выходные данные: "J.Smith@contoso.com", если значение John.Smith@contoso.com уже существует в каталоге.
- Выходные данные: "Jo.Smith@contoso.com", если два указанные выше значения имени участника-пользователя уже существуют в каталоге.
SingleAppRoleAssignment
Функция: SingleAppRoleAssignment([appRoleAssignments])
Описание: возвращает один объект appRoleAssignment из списка всех объектов appRoleAssignment, назначенных пользователю для заданного приложения. Эта функция необходима для преобразования объекта appRoleAssignment в отдельную строку имени роли. Рекомендуется назначать только один объект appRoleAssignment одному пользователю одновременно. Эта функция не поддерживается в сценариях, когда пользователи имеют несколько назначений ролей приложения.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
[appRoleAssignments] | Обязательное поле | Строка | Объект [appRoleAssignments]. |
Разделение
Функция: Split(source, delimiter)
Описание: разделяет строку на многозначный массив с помощью определенного символа разделителя.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
source | Обязательное поле | Строка | Значение source, которое необходимо обновить |
разделитель | Обязательное поле | Строка | Указывает символ, используемый для разделения строки (например, ",") |
Разделение строки на многозначный массив
Пример: выберите список строк с разделителями-запятыми и разделите их на массив, который можно подключить к такому многозначному атрибуту, как, например, атрибут PermissionSets компании Salesforce. В этом примере список наборов разрешений заполняется в extensionAttribute5 в идентификаторе Microsoft Entra.
Выражение: Split([extensionAttribute5], ",")
Пример ввода и вывода:
- Входные данные: (extensionAttribute5): "PermissionSetOne, PermissionSetTwo"
- ВЫХОДНЫЕ ДАННЫЕ: ["PermissionSetOne", "PermissionSetTwo"]
StripSpaces
Функция: StripSpaces(source)
Описание: удаляет все пробелы (" ") из исходной строки.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
source | Обязательное поле | Строка | Значение source, которое необходимо обновить |
Switch
Функция: Switch(source, defaultValue, key1, value1, key2, value2, …)
Описание: если значение source соответствует key, возвращается value для этого параметра key. Если значение source не соответствует ни одному параметру, то возвращается defaultValue. Параметры key и value должны всегда быть парными. Для функции необходимо всегда использовать четное количество параметров. Функция не должна использоваться для ссылальных атрибутов, таких как диспетчер.
Примечание.
Функция Switch выполняет сравнение строк значений source и key с учетом регистра. Если нужно выполнить сравнение без учета регистра, нормализуйте строку source перед сравнением с помощью вложенной функции ToLower и убедитесь, что во всех строках key используется нижний регистр.
Пример: Switch(ToLower([statusFlag]), "0", "true", "1", "false", "0")
. В этом примере атрибут source statusFlag
может иметь значения "True", "true" или "TRUE". Однако функция Switch всегда преобразует ее в строчную строку true перед сравнением с ключевыми параметрами.
Внимание
Для исходного параметра не используйте вложенные функции IsPresent, IsNull или IsNullOrEmpty. Вместо этого используйте пустую строку литерала в качестве одного из ключевых значений.
Пример: Switch([statusFlag], "Default Value", "true", "1", "", "0")
. В этом примере, если исходный атрибут statusFlag
пуст, функция Switch возвращает значение 0.
Внимание
Проблема. Служба подготовки неправильно задает значение атрибута null в целевой системе при использовании инструкции switch.
Разрешение. Используйте оператор IIF вместо инструкции switch, чтобы предотвратить непредвиденные значения NULL или использовать функцию IgnoreFlowIfNullOrEmpty с оператором switch. Например, switch([companyName], "External", "Company A", "A", "Company B", "B") должно быть представлено как IIF([companyName] = "Company A", "A", IIF([companyName] = "Company B", "B", "External")). В случаях, когда значение по умолчанию является атрибутом, используйте выражение, например IgnoreFlowIfNullOrEmpty([companyName], [companyName], "Company A", "A", "Company B", "B")).
Основная причина. Эта проблема связана с сценариями, в которых идентификатор Microsoft Entra является исходной системой, а инструкция switch содержит значение по умолчанию.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
source | Обязательное поле | Строка | Значение source, которое необходимо обновить |
defaultValue | Необязательно | Строка | Значение по умолчанию, которое необходимо использовать, если источник не соответствует ни одному ключу. Может быть пустой строкой (""). |
key | Обязательное поле | Строка | Параметр key, с которым сравнивается значение source. |
значение | Обязательное поле | Строка | Значение, которым заменяется значение source , соответствующее ключу. |
Замена значения на основе предопределенного набора параметров
Пример. Определите часовой пояс пользователя на основе кода состояния, хранящегося в идентификаторе Microsoft Entra. Если код государства не совпадает с предопределенными параметрами, используйте значение по умолчанию «Australia/Sydney».
Выражение:Switch([state], "Australia/Sydney", "NSW", "Australia/Sydney","QLD", "Australia/Brisbane", "SA", "Australia/Adelaide")
Пример ввода и вывода:
- ВВОД : (state): "QLD"
- ВЫВОД: "Australia/Brisbane"
ToLower
Функция: ToLower(source, culture)
Описание: принимает строковое значение source и преобразует его в нижний регистр, используя указанные правила языка и региональных параметров. Если не указана информация о языке и региональных параметрах, используется инвариантный язык и региональные параметры.
Если вы хотите задать существующие значения в целевой системе в нижнем регистре, обновите схему для целевого приложения и задайте для свойства caseExact значение true для интересующего атрибута.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
source | Обязательное поле | Строка | Как правило, имя атрибута из исходного объекта. |
Язык и региональные параметры | Необязательно | Строка | Форматом названия языка и региональных параметров в соответствии с RFC 4646 является languagecode2-country/regioncode2, где languagecode2 — это двухбуквенный код языка, а country/regioncode2 — двухбуквенный код субкультуры. Примеры включают в себя ja-JP для японского языка (Япония) и en-US для английского (США). В случаях, когда двухбуквенный языковой код недоступен, используется трехбуквенный код, производный от ISO 639-2. |
Преобразование созданного значения userPrincipalName (UPN) в нижний регистр
Пример: вы хотите создать значение UPN путем, связав исходные поля PreferredFirstName и PreferredLastName и преобразовав все символы в нижний регистр.
ToLower(Join("@", NormalizeDiacritics(StripSpaces(Join(".", [PreferredFirstName], [PreferredLastName]))), "contoso.com"))
Пример ввода и вывода:
- Входные данные (предпочитаемое имя): "John".
- Входные данные (предпочитаемая фамилия): "Smith".
- Выходные данные: "john.smith@contoso.com"
ToUpper
Функция: ToUpper(source, culture)
Описание: принимает строковое значение source и преобразует его в верхний регистр, используя указанные правила языка и региональных параметров. Если не указана информация о языке и региональных параметрах, используется инвариантный язык и региональные параметры.
Если вы хотите задать существующие значения в целевой системе в верхнем регистре, обновите схему для целевого приложения и задайте для атрибута значение true для интересующего вас атрибута.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
source | Обязательное поле | Строка | Как правило, имя атрибута из исходного объекта. |
Язык и региональные параметры | Необязательно | Строка | Форматом названия языка и региональных параметров в соответствии с RFC 4646 является languagecode2-country/regioncode2, где languagecode2 — это двухбуквенный код языка, а country/regioncode2 — двухбуквенный код субкультуры. Примеры включают в себя ja-JP для японского языка (Япония) и en-US для английского (США). В случаях, когда двухбуквенный языковой код недоступен, используется трехбуквенный код, производный от ISO 639-2. |
Word
Функция: Word(String,WordNumber,Delimiters)
Описание: функция Word возвращает слово, содержащееся внутри строки, в зависимости от параметров, описывающих разделители и количество слов для возврата. Каждая строка символов в строке, разделенной одним из символов-разделителей, определяется как слово:
если number < 1, возвращается пустая строка; если string имеет значение Null, возвращается пустая строка. Если строка содержит меньше числовых слов или строка не содержит слов, определенных разделителями, возвращается пустая строка.
Параметры:
Имя. | Обязательно/повторяется | Тип | Примечания. |
---|---|---|---|
String | Обязательное поле | Многозначный атрибут | Строка, из которой возвращается слово |
WordNumber | Обязательное поле | Целое | Число, определяющее номер слова, которое должно быть возвращено |
delimiters | Обязательное поле | Строка | Строка, задающая разделители между словами |
Пример:Word("The quick brown fox",3," ")
Возвращает значение brown.
Word("This,string!has&many separators",3,",!&#")
Возвращает значение has.
Примеры
В этом разделе представлены дополнительные примеры использования функций выражений.
Извлечение известного доменного имени
Извлеките известное доменное имя из адреса электронной почты пользователя, чтобы получить имя пользователя. Например, если домен — contoso.com, можно использовать следующее выражение:
Выражение:Replace([mail], "@contoso.com", , ,"", ,)
Пример ввода и вывода:
- Входные данные (mail): "john.doe@contoso.com"
- Выходные данные: john.doe
Создание псевдонима пользователя путем сцепления частей имени и фамилии
Создайте псевдоним пользователя, используя первые три буквы имени и первые пять букв фамилии пользователя.
Выражение:Append(Mid([givenName], 1, 3), Mid([surname], 1, 5))
Пример ввода и вывода:
- ВВОД : (givenName): "John"
- ВВОД : (surname): "Doe"
- Выходные данные: "JohDoe"
Добавьте запятую между фамилией и именем.
Добавьте запятую между фамилией и именем.
Выражение:Join(", ", "", [surname], [givenName])
Пример ввода и вывода:
- ВВОД : (givenName): "John"
- ВВОД : (surname): "Doe"
- ВЫВОД: "Doe, John"
Создайте идентификатор пользователя на основе идентификатора объекта Microsoft Entra. Удалите все буквы из идентификатора и добавьте 1000 в начале.
Это выражение позволяет создать идентификатор пользователя, который начинается с 1000 и, скорее всего, будет уникальным.
Выражение: Join(", 1000, Replace(ConvertToUTF8Hex([objectId]), "[a-zA-Z_]*", "", "", ,, ))
Пример ввода и вывода:
- INPUT: "00aa00aa-bb11-cc22-dd33-44ee4ee44ee4ee4ee4ee"
- ВЫХОДНЫЕ ДАННЫЕ: "100064303565343762312333930392343435612626135652636136306362633065346234"
Связанные статьи
- Автоматическая подготовка пользователей и ее отзыв для приложений SaaS
- Настройка сопоставления атрибутов для подготовки пользователей
- Фильтры области для подготовки пользователей
- Использование SCIM для включения автоматической подготовки пользователей и групп из идентификатора Microsoft Entra в приложения
- Уведомления о подготовке учетных записей
- Список учебников по интеграции приложений SaaS