Dokumentacja pisania wyrażeń mapowań atrybutów w identyfikatorze Entra firmy Microsoft

Podczas konfigurowania aprowizacji w aplikacji SaaS jednym z typów mapowań atrybutów, które można określić, jest mapowanie wyrażeń. W przypadku tych mapowań należy napisać wyrażenie podobne do skryptu, które pozwala przekształcić dane użytkowników w formaty, które są bardziej akceptowalne dla aplikacji SaaS.

Omówienie składni

Składnia wyrażeń mapowań atrybutów przypomina funkcje Języka Visual Basic for Applications (VBA).

  • Całe wyrażenie musi być zdefiniowane w kategoriach funkcji, które składają się z nazwy, po której następują argumenty w nawiasach: FunctionName(<<argument 1>>,<<argument N>>)

  • Funkcje można zagnieżdżać między sobą. Na przykład: FunctionOne(FunctionTwo(<<argument1>>))

  • Do funkcji można przekazać trzy różne typy argumentów:

    1. Atrybuty, które muszą być ujęte w nawiasy kwadratowe. Na przykład: [attributeName]
    2. Stałe ciągów, które muszą być ujęte w cudzysłowy. Na przykład: "Stany Zjednoczone"
    3. Inne funkcje. Na przykład: FunctionOne(<<argument1>>, FunctionTwo(<<argument2>>))
  • W przypadku stałych ciągów, jeśli potrzebujesz ukośnika odwrotnego ( \ ) lub cudzysłowu ( " ) w ciągu, musi on zostać usunięty z symbolem ukośnika odwrotnego ( \ ). Na przykład: "Nazwa firmy: \"Contoso\""

  • Składnia uwzględnia wielkość liter, która musi być uwzględniana podczas wpisywania ich jako ciągów w funkcji a wklejanie ich bezpośrednio z tego miejsca.

Lista funkcji

Dołączelement AppRoleAssignmentsComplexBitAndCBoolCDateCoalesceConvertToBase64ConvertToUTF8HexCountCStrDateAddDateDiffDateFromNumFormatDateTimeGuidIgnoreFlowIfNullOrEmpty IIFInStr IsNullOrEmpty IsNullOrEmptyIsPresentIsStringPrzyłączanieelementudo lewejpołowyNormalizeDiacriticsNotNowNumFromDatePCaseRandomStringRedactRemoveDuplicatesReplaceSelectUniqueValueSingleAppRoleAssignmentSplitStripSpacesswitchToUpper Word


Dołączanie

Funkcja: Append(źródło, sufiks)

Opis: Pobiera wartość ciągu źródłowego i dołącza sufiks na końcu.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
source Wymagania String Zazwyczaj nazwa atrybutu z obiektu źródłowego.
Sufiks Wymagania String Ciąg, który chcesz dołączyć na końcu wartości źródłowej.

Dołączanie sufiksu stałej do nazwy użytkownika

Przykład: jeśli używasz piaskownicy usługi Salesforce, może być konieczne dołączenie innego sufiksu do wszystkich nazw użytkowników przed ich zsynchronizowaniem.

Expression:Append([userPrincipalName], ".test")

Przykładowe dane wejściowe/wyjściowe:

  • INPUT: (userPrincipalName): "John.Doe@contoso.com"
  • DANE WYJŚCIOWE: "John.Doe@contoso.com.test"

AppRoleAssignmentsComplex

Funkcja: AppRoleAssignmentsComplex([appRoleAssignments])

Opis: służy do konfigurowania wielu ról dla użytkownika. Aby uzyskać szczegółowe informacje o użyciu, zobacz Samouczek — dostosowywanie mapowań atrybutów aprowizacji użytkowników dla aplikacji SaaS w usłudze Microsoft Entra ID.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
[appRoleAssignments] Wymagania String [appRoleAssignments] Obiektu.

BitAnd

Funkcja: BitAnd(value1, value2)

Opis: Ta funkcja konwertuje oba parametry na reprezentację binarną i ustawia bit na:

  • 0 — jeśli jeden lub oba odpowiadające bity w wartości1 i wartość2 mają wartość 0
  • 1 — jeśli oba odpowiednie bity mają wartość 1.

Innymi słowy, zwraca wartość 0 we wszystkich przypadkach, z wyjątkiem sytuacji, gdy odpowiadające im bity obu parametrów to 1.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
wartość1 Wymagania Liczba Wartość liczbowa, która powinna mieć wartość AND'ed z wartością2
value2 Wymagania Liczba Wartość liczbowa, która powinna mieć wartość AND'ed z wartością1

Przykład:BitAnd(&HF, &HF7)

11110111 AND 00000111 = 00000111 więc BitAnd zwraca wartość binarną 00000111 7.


Cbool

Funkcja:CBool(Expression)

Opis:CBool zwraca wartość logiczną na podstawie obliczonego wyrażenia. Jeśli wyrażenie zwróci wartość inną niż zero, zwraca CBool wartość True, a następnie zwraca wartość False.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
Expression Wymagania wyrażenie Dowolne prawidłowe wyrażenie

Przykład:CBool([attribute1] = [attribute2])
Zwraca wartość True, jeśli oba atrybuty mają tę samą wartość.


Cdate

Funkcja:
CDate(expression)

Opis rozwiązania:
Funkcja CDate zwraca czas UTC DateTime z ciągu. DateTime nie jest natywnym typem atrybutu, ale może być używany w funkcjach daty, takich jak FormatDateTime i DateAdd.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
Expression Wymagania Expression Dowolny prawidłowy ciąg reprezentujący datę/godzinę. W przypadku obsługiwanych formatów zapoznaj się z niestandardowymi ciągami formatu daty i godziny platformy .NET.

Uwagi:
Zwracany ciąg jest zawsze w formacie UTC i jest zgodny z formatem M/d/rrrr h:mm:ss tt.

Przykład 1:
CDate([StatusHireDate])
Przykładowe dane wejściowe/wyjściowe:

  • INPUT (StatusHireDate): "2020-03-16-07:00"
  • DANE WYJŚCIOWE: "3/16/2020 7:00:00" <- Zwróć uwagę na odpowiednik UTC powyższej daty/godziny

Przykład 2:
CDate("2021-06-30+08:00")
Przykładowe dane wejściowe/wyjściowe:

  • WEJŚCIE: "2021-06-30+08:00"
  • DANE WYJŚCIOWE: "29.06.2021 16:00:00" <- Zwróć uwagę na odpowiednik UTC powyższej daty/godziny

Przykład 3:
CDate("2009-06-15T01:45:30-07:00")
Przykładowe dane wejściowe/wyjściowe:

  • DANE WEJŚCIOWE: "2009-06-15T01:45:30-07:00"
  • DANE WYJŚCIOWE: "6/15/2009 8:45:30 am" <- Zwróć uwagę na odpowiednik UTC powyższej daty/godziny

Coalesce

Funkcja: Coalesce(source1, source2, ..., defaultValue)

Opis: zwraca pierwszą wartość źródłową, która nie ma wartości NULL. Jeśli wszystkie argumenty mają wartość NULL, a wartość defaultValue jest obecna, zwracana jest wartość defaultValue. Jeśli wszystkie argumenty mają wartość NULL, a wartość defaultValue nie jest obecna, funkcja Coalesce zwraca wartość NULL.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
źródło1 ... sourceN Wymagania String Wymagana, zmienna liczba razy. Zazwyczaj nazwa atrybutu z obiektu źródłowego.
Defaultvalue Opcjonalnie String Wartość domyślna, która ma być używana, gdy wszystkie wartości źródłowe mają wartość NULL. Może być pusty ciąg ("").

Wartość poczty przepływu, jeśli nie ma wartości NULL, w przeciwnym razie przepływ userPrincipalName

Przykład: jeśli jest obecny, możesz przepływać atrybut poczty. Jeśli tak nie jest, zamiast tego chcesz przepływać wartość userPrincipalName.

Expression:Coalesce([mail],[userPrincipalName])

Przykładowe dane wejściowe/wyjściowe:

  • INPUT (mail): NULL
  • INPUT (userPrincipalName): "John.Doe@contoso.com"
  • DANE WYJŚCIOWE: "John.Doe@contoso.com"

ConvertToBase64

Funkcja: ConvertToBase64(source)

Opis: funkcja ConvertToBase64 konwertuje ciąg na ciąg Base64 Unicode.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
source Wymagania String Ciąg, który ma zostać przekonwertowany na podstawowy 64

Przykład:ConvertToBase64("Hello world!")

Zwraca wartość "SABlAGwAbABvACAAdwBvAHIAbABkACEA"


ConvertToUTF8Hex

Funkcja: ConvertToUTF8Hex(source)

Opis: Funkcja ConvertToUTF8Hex konwertuje ciąg na wartość zakodowaną algorytmem szesnastkowym UTF8.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
source Wymagania String Ciąg do konwersji na szesnastkowy UTF8

Przykład:ConvertToUTF8Hex("Hello world!")

Zwraca wartość 48656C6C6F20776F726C6421


Count

Funkcja: Count(attribute)

Opis: Funkcja Count zwraca liczbę elementów w atrybucie wielowartościowym

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
attribute Wymagania attribute Atrybut wielowarty, który będzie miał zliczane elementy

Cstr

Funkcja: CStr(wartość)

Opis: Funkcja CStr konwertuje wartość na typ danych ciągu.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
wartość Wymagania numeryczne, odwołanie lub wartość logiczna Może być wartością liczbową, atrybutem odwołania lub wartością logiczną.

Przykład:CStr([dn])

Zwraca wartość "cn=Joe,dc=contoso,dc=com"


DateAdd

Funkcja:
DateAdd(interval, value, dateTime)

Opis rozwiązania:
Zwraca ciąg daty/godziny reprezentujący datę, do której dodano określony interwał czasu. Zwracana data ma format: M/d/rrrr h:mm:ss tt.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
interval Wymagania String Interwał czasu, który chcesz dodać. Zobacz zaakceptowane wartości poniżej tej tabeli.
wartość Wymagania Liczba Liczba jednostek, które chcesz dodać. Może to być pozytywne (aby uzyskać daty w przyszłości) lub ujemne (aby uzyskać daty w przeszłości).
Datetime Wymagania DateTime Data/godzina reprezentująca datę dodania interwału.

Podczas przekazywania ciągu daty jako danych wejściowych użyj funkcji CDate , aby opakować ciąg daty/godziny. Aby uzyskać czas systemowy w formacie UTC, użyj funkcji Now .

Ciąg interwału musi mieć jedną z następujących wartości:

  • Rok yyyy
  • m Miesiąc
  • d Dzień
  • ww Week
  • h Godzina
  • n Minuta
  • s Sekunda

Przykład 1. Generowanie wartości daty na podstawie przychodzącego parametru StatusHireDate z produktu Workday
DateAdd("d", 7, CDate([StatusHireDate]))

Przykład interval wartość dateTime (wartość zmiennej StatusHireDate) output
Dodawanie 7 dni do daty zatrudnienia „d” 7 2012-03-16-07:00 3/23/2012 7:00:00
Pobieranie daty dziesięć dni przed datą zatrudnienia „d” -10 2012-03-16-07:00 3/6/2012 7:00:00
Dodaj dwa tygodnie do daty zatrudnienia "ww" 2 2012-03-16-07:00 3.30.2012 7:00:00
Dodawanie dziesięciu miesięcy do daty zatrudnienia „m” 10 2012-03-16-07:00 1/16/2013 7:00:00
Dodawanie dwóch lat do daty zatrudnienia „yyyy” 2 2012-03-16-07:00 3/16/2014 7:00:00

DateDiff

Funkcja:
DateDiff(interval, date1, date2)

Opis rozwiązania:
Ta funkcja używa parametru interval , aby zwrócić liczbę wskazującą różnicę między dwiema datami wejściowymi. Zwraca

  • liczba dodatnia, jeśli data2 > data1,
  • liczba ujemna, jeśli data2 < data1,
  • 0, jeśli data2 == data1

Parametry:

Nazwisko Wymagane/opcjonalnie Type Uwagi
interval Wymagania String Interwał czasu, który ma być używany do obliczania różnicy.
data1 Wymagania DateTime Data/godzina reprezentująca prawidłową datę.
data2 Wymagania DateTime Data/godzina reprezentująca prawidłową datę.

Podczas przekazywania ciągu daty jako danych wejściowych użyj funkcji CDate , aby opakować ciąg daty/godziny. Aby uzyskać czas systemowy w formacie UTC, użyj funkcji Now .

Ciąg interwału musi mieć jedną z następujących wartości:

  • Rok yyyy
  • m Miesiąc
  • d Dzień
  • ww Week
  • h Godzina
  • n Minuta
  • s Sekunda

Przykład 1. Porównanie bieżącej daty z datą zatrudnienia z produktu Workday z różnymi interwałami
DateDiff("d", Now(), CDate([StatusHireDate]))

Przykład interval date1 date2 output
Dodatnia różnica w dniach między dwiema datami d 2021-08-18+08:00 2021-08-31+08:00 13
Ujemna różnica w dniach między dwiema datami d 25.08.2021 15:41:18 2012-03-16-07:00 -3449
Różnica w tygodniach między dwiema datami ww 25.08.2021 15:41:18 2012-03-16-07:00 -493
Różnica w miesiącach między dwiema datami m 25.08.2021 15:41:18 2012-03-16-07:00 -113
Różnica w latach między dwiema datami yyyy 25.08.2021 15:41:18 2012-03-16-07:00 -9
Różnica, gdy obie daty są takie same d 2021-08-31+08:00 2021-08-31+08:00 0
Różnica w godzinach między dwiema datami h 2021-08-24 2021-08-25 24
Różnica w minutach między dwiema datami n 2021-08-24 2021-08-25 1440
Różnica w sekundach między dwiema datami s 2021-08-24 2021-08-25 86400

Przykład 2. Łączenie funkcji DateDiff z funkcją IIF w celu ustawienia wartości atrybutu
Jeśli konto jest aktywne w usłudze Workday, ustaw atrybut accountEnabled użytkownika na wartość True tylko wtedy, gdy data zatrudnienia mieści się w ciągu najbliższych pięciu dni.

Switch([Active], , 
  "1", IIF(DateDiff("d", Now(), CDate([StatusHireDate])) > 5, "False", "True"), 
  "0", "False")

DateFromNum

Funkcja: DateFromNum(wartość)

Opis: Funkcja DateFromNum konwertuje wartość w formacie daty usługi AD na typ DateTime.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
wartość Wymagania Data Data usługi AD, która ma zostać przekonwertowana na typ DateTime

Przykład:DateFromNum([lastLogonTimestamp])

DateFromNum(129699324000000000)

Zwraca wartość typu DateTime reprezentującą 1 stycznia 2012 r. o godzinie 11:00.


Formatdatetime

Funkcja: FormatDateTime(źródło, dateTimeStyles, inputFormat, outputFormat)

Opis: Pobiera ciąg daty z jednego formatu i konwertuje go na inny format.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
source Wymagania String Zazwyczaj nazwa atrybutu z obiektu źródłowego.
Datetimestyles Opcjonalnie String Użyj tego parametru, aby określić opcje formatowania, które dostosują analizowanie ciągów dla niektórych metod analizy daty i godziny. Aby uzyskać obsługiwane wartości, zobacz dokument DateTimeStyles. Jeśli pole pozostanie puste, użyta wartość domyślna to DateTimeStyles.RoundtripKind, DateTimeStyles.AllowLeadingWhite, DateTimeStyles.AllowTrailingWhite
inputFormat Wymagania String Oczekiwany format wartości źródłowej. Aby uzyskać obsługiwane formaty, zobacz niestandardowe ciągi formatu daty i godziny platformy .NET.
outputFormat Wymagania String Format daty wyjściowej.

Data wyjściowa jako ciąg w określonym formacie

Przykład: chcesz wysłać daty do aplikacji SaaS, takiej jak ServiceNow, w określonym formacie. Możesz rozważyć użycie następującego wyrażenia.

Expression:

FormatDateTime([extensionAttribute1], , "yyyyMMddHHmmss.fZ", "yyyy-MM-dd")

Przykładowe dane wejściowe/wyjściowe:

  • INPUT (extensionAttribute1): "20150123105347.1Z"
  • DANE WYJŚCIOWE: "2015-01-23"

Identyfikator GUID

Funkcja: Guid()

Opis: Identyfikator GUID funkcji generuje nowy losowy identyfikator GUID

Przykład:
Guid()
Przykładowe dane wyjściowe: "1088051a-cd4b-4288-84f8-e02042ca72bc"


IgnoreFlowIfNullOrEmpty

Funkcja: IgnoreFlowIfNullOrEmpty(expression)

Opis: Funkcja IgnoreFlowIfNullOrEmpty nakazuje usłudze aprowizacji zignorowanie atrybutu i usunięcie go z przepływu, jeśli dołączona funkcja lub atrybut ma wartość NULL lub jest pusta.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
Expression Wymagania Expression Wyrażenie do oceny

Przykład 1: Nie przepływaj atrybutu, jeśli ma wartość null
IgnoreFlowIfNullOrEmpty([department])
Powyższe wyrażenie spowoduje usunięcie atrybutu działu z przepływu aprowizacji, jeśli ma wartość null lub jest pusta.

Przykład 2: Nie przepływaj atrybutu, jeśli mapowanie wyrażenia zwróci wartość pustego ciągu lub wartości null
Załóżmy, że prefiks atrybutu SuccessFactors jest mapowany na atrybut lokalna usługa Active Directory personalTitle przy użyciu następującego mapowania wyrażeń:
IgnoreFlowIfNullOrEmpty(Switch([prefix], "", "3443", "Dr.", "3444", "Prof.", "3445", "Prof. Dr."))
Powyższe wyrażenie najpierw oblicza funkcję Switch . Jeśli atrybut prefiksu nie ma żadnej z wartości wymienionych w funkcji Switch, funkcja Switch zwróci pusty ciąg, a atrybut personalTitle nie zostanie uwzględniony w przepływie aprowizacji w celu lokalna usługa Active Directory.


IIF

Funkcja: IIF(condition,valueIfTrue,valueIfFalse)

Opis: Funkcja IIF zwraca jeden z zestawów możliwych wartości na podstawie określonego warunku.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
Warunek Wymagania Zmienna lub wyrażenie Dowolna wartość lub wyrażenie, które można ocenić na wartość true lub false.
valueIfTrue Wymagania Zmienna lub ciąg Jeśli warunek ma wartość true, zwracana wartość.
valueIfFalse Wymagania Zmienna lub ciąg Jeśli warunek ma wartość false, zwracana wartość.

Następujące operatory porównania mogą być używane w warunku:

  • Równe (=) i nie równe (<>)
  • Większe niż (>) i większe niż równe (>=)
  • Mniejsze niż (<) i mniejsze niż (<=)

Przykład: ustaw wartość atrybutu docelowego na atrybut kraju źródłowego, jeśli country="USA", inne ustaw wartość atrybutu docelowego na atrybut działu źródłowego. IIF([country]="USA",[country],[department])

Znane ograniczenia

Ta sekcja zawiera ograniczenia i obejścia dotyczące funkcji IIF. Aby uzyskać informacje na temat rozwiązywania problemów z tworzeniem użytkowników, zobacz Tworzenie kończy się niepowodzeniem z powodu wartości null/pustych.

  • Funkcja IIF obecnie nie obsługuje operatorów LOGICZNYch AND i OR.
  • Aby zaimplementować logikę AND, użyj zagnieżdżonej instrukcji IIF w łańcuchu wzdłuż ścieżki trueValue . Przykład: Jeśli country="USA" i state="CA", zwraca wartość "True", w przeciwnym razie zwraca wartość "False". IIF([country]="USA",IIF([state]="CA","True","False"),"False")
  • Aby zaimplementować logikę OR, użyj zagnieżdżonej instrukcji IIF w łańcuchu wzdłuż ścieżki falseValue . Przykład: Jeśli country="USA" lub state="CA", zwraca wartość "True", w przeciwnym razie zwraca wartość "False". IIF([country]="USA","True",IIF([state]="CA","True","False"))
  • Jeśli atrybut źródłowy używany w funkcji IIF jest pusty lub ma wartość null, sprawdzanie warunku kończy się niepowodzeniem.
    • Przykłady nieobsługiwanych wyrażeń IIF:
      • IIF([country]="","Other",[country])
      • IIF(IsNullOrEmpty([country]),"Other",[country])
      • IIF(IsPresent([country]),[country],"Other")
    • Zalecane obejście: użyj funkcji Switch , aby sprawdzić, czy nie ma wartości pustych/null. Przykład: jeśli atrybut kraju jest pusty, ustaw wartość "Inne". Jeśli jest obecny, przekaż wartość atrybutu kraju do atrybutu docelowego.
      • Switch([country],[country],"","Other")

Instr

Funkcja: InStr(value1, value2, start, compareType)

Opis: Funkcja InStr znajduje pierwsze wystąpienie podciągów w ciągu

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
wartość1 Wymagania String Ciąg do wyszukania
value2 Wymagania String Ciąg do znalezienia
start Opcjonalnie Integer Pozycja początkowa w celu znalezienia podciągów
compareType Opcjonalnie Wyliczenie Może to być vbTextCompare lub vbBinaryCompare

Przykład:InStr("The quick brown fox","quick")

Ocenia wartość 5

InStr("repEated","e",3,vbBinaryCompare)

Ocenia wartość 7


Isnull

Funkcja: IsNull(Expression)

Opis: Jeśli wyrażenie zwróci wartość Null, funkcja IsNull zwraca wartość true. W przypadku atrybutu wartość Null jest wyrażona przez brak atrybutu.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
Expression Wymagania Expression Wyrażenie do oceny

Przykład:IsNull([displayName])

Zwraca wartość True, jeśli atrybut nie jest obecny.


IsNullorEmpty

Funkcja: IsNullOrEmpty(Expression)

Opis: Jeśli wyrażenie ma wartość null lub pusty ciąg, funkcja IsNullOrEmpty zwraca wartość true. W przypadku atrybutu ta wartość ma wartość True, jeśli atrybut jest nieobecny lub jest obecny, ale jest pustym ciągiem. Odwrotność tej funkcji nosi nazwę IsPresent.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
Expression Wymagania Expression Wyrażenie do oceny

Przykład:IsNullOrEmpty([displayName])

Zwraca wartość True, jeśli atrybut nie jest obecny lub jest pustym ciągiem.


Ispresent

Funkcja: IsPresent(Expression)

Opis: Jeśli wyrażenie daje w wyniku ciąg, który nie ma wartości Null i nie jest pusty, funkcja IsPresent zwraca wartość true. Odwrotność tej funkcji nosi nazwę IsNullOrEmpty.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
Expression Wymagania Expression Wyrażenie do oceny

Przykład:Switch(IsPresent([directManager]),[directManager], IsPresent([skiplevelManager]),[skiplevelManager], IsPresent([director]),[director])


IsString

Funkcja: IsString(Expression)

Opis: Jeśli wyrażenie można ocenić na typ ciągu, funkcja IsString zwraca wartość True.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
Expression Wymagania Expression Wyrażenie do oceny

Produkt

Funkcja: Item(attribute, index)

Opis: Funkcja Item zwraca jeden element z wielowartego ciągu/atrybutu.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
attribute Wymagania Atrybut Atrybut wielowarty do przeszukania
Indeks Wymagania Integer Indeksowanie do elementu w ciągu wielowartym

Przykład:Item([proxyAddresses], 1) zwraca pierwszy element w atrybucie wielowartym. Indeks 0 nie powinien być używany.


Dołączanie

Funkcja: Join(separator, source1, source2, ...)

Opis: Join() jest podobny do Append(), z tą różnicą, że może łączyć wiele wartości ciągu źródłowego w jeden ciąg, a każda wartość zostanie oddzielona ciągiem separatora.

Jeśli jedna z wartości źródłowych jest atrybutem wielowartościowym, każda wartość w tym atrybucie zostanie połączona, oddzielona wartością separatora.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
Separator Wymagania String Ciąg używany do oddzielania wartości źródłowych, gdy są one łączone w jeden ciąg. Może być "", jeśli separator nie jest wymagany.
źródło1 ... sourceN Wymagana, zmienna liczba razy String Wartości ciągów, które mają być połączone ze sobą.

Left

Funkcja: Left(String, NumChars)

Opis: Funkcja Left zwraca określoną liczbę znaków z lewej strony ciągu. Jeśli argument numChars = 0, zwraca pusty ciąg. Jeśli wartość numChars < 0, zwraca ciąg wejściowy. Jeśli ciąg ma wartość null, zwróć pusty ciąg. Jeśli ciąg zawiera mniej znaków niż liczba określona w numChars, zwracany jest ciąg identyczny z ciągiem (czyli zawierającym wszystkie znaki w parametrze 1).

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
ciąg Wymagania Atrybut Ciąg, z których mają być zwracane znaki
NumChars Wymagania Integer Liczba identyfikująca liczbę znaków, które mają być zwracane od początku (po lewej) ciągu

Przykład:Left("John Doe", 3)

Zwraca wartość "Joh".


Mid

Funkcja: Mid(source, start, length)

Opis: zwraca podciąg wartości źródłowej. Podciąg to ciąg zawierający tylko niektóre znaki z ciągu źródłowego.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
source Wymagania String Zazwyczaj nazwa atrybutu.
start Wymagania Integer Indeks w ciągu źródłowym, w którym należy uruchomić podciąg. Pierwszy znak w ciągu ma indeks 1, drugi znak ma indeks 2 itd.
length Wymagania Integer Długość podciągów. Jeśli długość kończy się poza ciągiem źródłowym, funkcja zwraca podciąg od indeksu początkowego do końca ciągu źródłowego.

NormalizeDiacritics

Funkcja: NormalizeDiacritics(source)

Opis: wymaga jednego argumentu ciągu. Zwraca ciąg, ale z dowolnymi znakami diakrytycznymi zastąpionymi równoważnymi znakami niekrytycznymi. Zazwyczaj służy do konwertowania nazwisk i nazwisk zawierających znaki diakrytyczne (znaki wyróżniające) na wartości prawne, które mogą być używane w różnych identyfikatorach użytkowników, takich jak nazwy główne użytkowników, nazwy kont SAM i adresy e-mail.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
source Wymagania String Zazwyczaj imię lub nazwisko atrybutu.
Znak z znakiem diakrytycznym Znormalizowany znak Znak z znakiem diakrytycznym Znormalizowany znak
ä, à, â, ã, å, á, ą, ă, ā, ā́, ā̀, ā̂, ā̃, ǟ, āĀ, ǡ, 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̱ i Ï, Î, Ě, Í, İ, Ī, Ī̀, Ī̂, Ī̃, I̱ I
ľ, ł, lľ, ḹ, ḻ l Ł, Ľ, LĽ, Ḹ, Ḻ L
ñ, ń, ň, nŇ, ṉ n Ñ, Ń, Ň, NŇ, Ṉ N
ö, ò, ő, õ, ô, ó, ō, ṓ, ṑ, ō̂, ō̃, ȫ, ōς, ǭ, ȭ, ȱ, o̱ o Ö, Ò, Ő, Õ, Ô, Ó, Ō, Ṓ, Ṑ, Ō̂, Ō̃, Ȫ, Ōς, Ǭ, Ȭ, Ȱ, O̱ O
ø, øØ, ø JEJ Oe Ø, Ø Jej Ø, Ś OE
ř, rø, ṟ, ṝ r Ř, Rř, Ṟ, Ṝ R
ß ss
š, ś, ş, ş, scu, s̱ s Š, Ś, Ş, S JEJ, S̱ S
ť, ț, tŤ, ṯ t Ť, Ț, TŤ, Ṯ T
ü, ů, ū, ú, ů, ů, ū, ū́, ū̀, ū̂, ū̃, uū, ǖ, ṻ, ṳы, u̱ u Ü, Ů, Ů, Ú, Ů, Ū, Ū, Ū̀, Ū̂, Ū̃, UŪ̃, UŪ, Ǖ, Ṻ, Ṳ · U
ÿ, ý, ȳ, ȳ', ȳ̀, ȳ̃, y̱ t Ÿ, Ý, Ȳ, Ȳ́, Ȳ̀, Ȳ̃, Y̱ Y
ź, ž, ż, zμ, μ z Ź, Ž, Ż, Z jej Z

Usuwanie znaków diakrytycznych z ciągu

Przykład: Zastąp znaki zawierające znaczniki wyróżniające równoważnymi znakami, które nie zawierają znaków wyróżniających.

Wyrażenie: NormalizeDiacritics([givenName])

Przykładowe dane wejściowe/wyjściowe:

  • INPUT (givenName): "Zoë"
  • DANE WYJŚCIOWE: "Zoe"

Not

Funkcja: Not(source)

Opis: Przerzuca wartość logiczną źródła. Jeśli wartość źródłowa ma wartość True, zwraca wartość False. W przeciwnym razie zwraca wartość True.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
source Wymagania Ciąg logiczny Oczekiwane wartości źródłowe to "True" lub "False".

Teraz

Funkcja: Now()

Opis rozwiązania:
Funkcja Now zwraca ciąg reprezentujący bieżącą datę UTC w formacie M/d/rrrr h:mm:ss tt.

Przykład:Now()
Przykładowa wartość zwrócona 2.07.2021 15:33:38


NumFromDate

Funkcja: NumFromDate(wartość)

Opis: Funkcja NumFromDate konwertuje wartość DateTime na format usługi Active Directory, który jest wymagany do ustawiania atrybutów, takich jak accountExpires. Ta funkcja służy do konwertowania wartości DateTime odebranych z aplikacji hr w chmurze, takich jak Workday i SuccessFactors, na ich równoważną reprezentację usługi AD.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
wartość Wymagania String Ciąg daty/godziny w formacie ISO 8601 . Jeśli zmienna daty jest w innym formacie, użyj funkcji FormatDateTime , aby przekonwertować datę na format ISO 8601.

Przykład:

  • Przykład produktu Workday zakładając, że chcesz mapować atrybut ContractEndDate z produktu Workday, który ma format 2020-12-31-08:00 do pola accountExpires w usłudze AD, oto jak można użyć tej funkcji i zmienić przesunięcie strefy czasowej w celu dopasowania ustawień regionalnych. NumFromDate(Join("", FormatDateTime([ContractEndDate], ,"yyyy-MM-ddzzz", "yyyy-MM-dd"), " 23:59:59-08:00"))

  • SuccessFactors przykład Zakładając, że chcesz mapować atrybut endDate z SuccessFactors, który jest w formacie M/d/rrrr hh:mm:ss tt na accountExpires pole w usłudze AD, oto jak można użyć tej funkcji i zmienić przesunięcie strefy czasowej, aby dopasować ustawienia regionalne. NumFromDate(Join("",FormatDateTime([endDate], ,"M/d/yyyy hh:mm:ss tt","yyyy-MM-dd")," 23:59:59-08:00"))


PCase

Funkcja: PCase(źródło, wordSeparators)

Opis: Funkcja PCase konwertuje pierwszy znak każdego wyrazu w ciągu na wielkie litery, a wszystkie inne znaki są konwertowane na małe litery.

Parametry:

Nazwisko Wymagane/opcjonalnie Type Uwagi
source Wymagania String wartość źródłowa do konwersji na właściwą wielkość liter.
wordSeparators Opcjonalnie String Określ zestaw znaków, który jest używany jako separatory wyrazów (na przykład: ",-")

Uwagi:

  • Jeśli parametr wordSeparators nie jest określony, PCase wewnętrznie wywołuje funkcję .NET ToTitleCase, aby przekonwertować ciąg źródłowy na prawidłowy przypadek. Funkcja .NET ToTitleCase obsługuje kompleksowy zestaw kategorii znaków Unicode jako separatory wyrazów.
    • Znak spacji
    • Nowy znak wiersza
    • Znaki sterujące , takie jak CRLF
    • Formatowanie znaków kontrolki
    • Połączenie orPunctuation znaków, takich jak podkreślenie
    • Znaki dashPunctuation, takie jak kreska i łącznik (w tym znaki takie jak En Dash, Em Dash, podwójny łącznik itp.)
    • Znaki OpenPunctuation i ClosePunctuation, które występują w parach, takich jak nawias nawiasu, nawias klamrowy, nawias kątowy itp.
    • Znaki InitialQuotePunctuation i FinalQuotePunctuation, takie jak pojedyncze cudzysłowy, cudzysłowy podwójne i cudzysłowy angular.
    • Inne znaki punktuacji , takie jak wykrzyknik, znak numeru, znak procentu, ampersand, gwiazdka, przecinek, kropka, dwukropek, średnik itp.
    • Znaki mathSymbol , takie jak znak plus, znak mniejszy niż i większy niż znak, linia pionowa, tylda, znak równości itp.
    • CurrencySymbol znaki, takie jak znak dolara, znak centa, znak funta, znak euro itp.
    • ModyfikatorSymbol znaków, takich jak macron, akcenty, groty strzałek itp.
    • Inne znaki, takie jak znak praw autorskich, znak stopnia, zarejestrowany znak itp.
  • Jeśli określono parametr wordSeparators, PCase używa tylko znaków określonych jako separatory wyrazów.

Przykład:

Załóżmy, że uściślisz atrybuty firstName i lastName z rozwiązania SAP SuccessFactors, a w usłudze HR oba te atrybuty znajdują się w wielkim przypadku. Za pomocą funkcji PCase można przekonwertować nazwę na właściwą wielkość liter, jak pokazano poniżej.

Expression Dane wejściowe Dane wyjściowe Uwagi
PCase([firstName]) firstName = "PABLO GONSALVES (SECOND)" "Pablo Gonsalves (drugi)" Ponieważ parametr wordSeparators nie jest określony, funkcja PCase używa domyślnego zestawu znaków separatorów wyrazów.
PCase([lastName]," '-") lastName = "PINTO-DE'SILVA" "Pinto-De'Silva" Funkcja PCase używa znaków w parametrze wordSeparators do identyfikowania wyrazów i przekształcania ich w prawidłowy przypadek.
PCase(Join(" ",[firstName],[lastName])) firstName = GREGORY, lastName = "JAMES" "Gregory James" Funkcję Join można zagnieżdżać w PCase. Ponieważ parametr wordSeparators nie jest określony, funkcja PCase używa domyślnego zestawu znaków separatorów wyrazów.

Ciąg losowy

Funkcja: RandomString(Length, MinimumNumbers, MinimumSpecialCharacters, MinimumCapital, MinimumLowerCase, CharactersToAvoid)

Opis: Funkcja RandomString generuje losowy ciąg na podstawie określonych warunków. W tym miejscu można zidentyfikować dozwolone znaki.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
Długość Wymagania Liczba Łączna długość losowego ciągu. Powinna być większa lub równa sumie wartości MinimumNumbers, MinimumSpecialCharacters i MinimumCapital. Maksymalnie 256 znaków.
MinimumNumbers Wymagania Liczba Minimalna liczba w ciągu losowym.
MinimumSpecialCharacters Wymagania Liczba Minimalna liczba znaków specjalnych.
MinimumKapitalia Wymagania Liczba Minimalna liczba liter w losowym ciągu.
MinimumLowerCase Wymagania Liczba Minimalna liczba małych liter w ciągu losowym.
ZnakiToAvoid Opcjonalnie String Znaki do wykluczenia podczas generowania losowego ciągu.

Przykład 1: — Generowanie losowego ciągu bez ograniczeń znaków specjalnych: RandomString(6,3,0,0,3) Generuje losowy ciąg z 6 znakami. Ciąg zawiera 3 cyfry i 3 małe litery (1a73qt).

Przykład 2: — Generowanie losowego ciągu z ograniczeniami znaków specjalnych: RandomString(10,2,2,2,1,"?,") Generuje losowy ciąg z 10 znakami. Ciąg zawiera co najmniej 2 cyfry, 2 znaki specjalne, 2 wielkie litery, 1 małą literę i wyklucza znaki "?" i "", (1@!2BaRg53).


Cenzuruj

Funkcja: Redact()

Opis: Funkcja Redact zastępuje wartość atrybutu literałem ciągu "[Redact]" w dziennikach aprowizacji.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
atrybut/wartość Wymagania String Określ atrybut lub stałą /ciąg, aby zredagować z dzienników.

Przykład 1: Redact atrybutu: Redact([userPrincipalName]) Usuwa element userPrincipalName z dzienników aprowizacji.

Przykład 2. Redact ciągu: Redact("StringToBeRedacted") Usuwa ciąg stały z dzienników aprowizacji.

Przykład 3. Redact losowy ciąg: Redact(RandomString(6,3,0,0,3)) Usuwa losowy ciąg z dzienników aprowizacji.


RemoveDuplicates

Funkcja: RemoveDuplicates(atrybut)

Opis: Funkcja RemoveDuplicates przyjmuje ciąg wielowartościowy i upewnij się, że każda wartość jest unikatowa.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
attribute Wymagania Atrybut wielowarty Atrybut wielowartośćowy, który ma usunięte duplikaty

Przykład:RemoveDuplicates([proxyAddresses]) zwraca oczyszczony atrybut proxyAddress, w którym wszystkie zduplikowane wartości są usuwane.


Replace

Funkcja: Replace(source, oldValue, regexPattern, regexGroupName, replaceValue, replaceAttributeName, template)

Opis: zamienia wartości w ciągu w sposób uwzględniający wielkość liter. Funkcja działa inaczej w zależności od podanych parametrów:

  • Gdy są podane wartości oldValue i replacementValue:

    • Zastępuje wszystkie wystąpienia oldValue w źródle wartością replaceValue
  • Po podaniu wartości oldValue i szablonu :

    • Zastępuje wszystkie wystąpienia oldValue w szabloniewartością źródłową
  • Po podaniu wartości regexPattern i replacementValue :

    • Funkcja stosuje wyrażenie regexPattern do ciągu źródłowegoi można użyć nazw grup wyrażeń regularnych, aby skonstruować ciąg dla elementu replacementValue

Uwaga

Aby dowiedzieć się więcej na temat konstrukcji grupowania wyrażeń regularnych i nazwanych podwyrażeń, zobacz Grupowanie konstrukcji w wyrażeniach regularnych.

  • Gdy regexPattern, regexGroupName, element replacementValue są udostępniane:

    • Funkcja stosuje regexPattern do ciągu źródłowego i zastępuje wszystkie wartości pasujące do regexGroupName wartością replaceValue
  • Gdy element regexPattern, regexGroupName, podano wartość replacementAttributeName :

    • Jeśli źródło ma wartość, źródło jest zwracane
    • Jeśli źródło nie ma wartości, funkcja stosuje regexPattern do zastępczejAttributeName i zwraca wartość zgodną z regexGroupName

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
source Wymagania String Zazwyczaj nazwa atrybutu z obiektu źródłowego.
Oldvalue Opcjonalnie String Wartość do zastąpienia w źródle lub szablonie.
regexPattern Opcjonalnie String Wzorzec wyrażeń regularnych dla wartości, która ma zostać zastąpiona w źródle. Gdy jest używana funkcja replacementAttributeName , wyrażenie regexPattern jest stosowane w celu wyodrębnienia wartości z replacementAttributeName.
regexGroupName Opcjonalnie String Nazwa grupy wewnątrz regexPattern. W przypadku użycia nazwy replacementAttributeName wyodrębnimy wartość nazwanej grupy regex z nazwy replacementAttributeName i zwrócimy ją jako wartość zastępczą.
replacementValue Opcjonalnie String Nowa wartość, która ma zastąpić stary element.
replacementAttributeName Opcjonalnie String Nazwa atrybutu, który ma być używany dla wartości zastępczej
sieci Web Opcjonalnie String Po podaniu wartości szablonu wyszukamy element oldValue wewnątrz szablonu i zastąpimy ją wartością źródłową.

Zastępowanie znaków przy użyciu wyrażenia regularnego

Przykład 1. Użycie wartości oldValue i replaceValue w celu zastąpienia całego ciągu źródłowego innym ciągiem.

Załóżmy, że system kadr ma atrybut BusinessTitle. W ramach ostatnich zmian stanowiska firma chce zaktualizować każdego, kto ma tytuł biznesowy "Product Developer" na "Inżynier oprogramowania". W takim przypadku możesz użyć następującego wyrażenia w mapowaniu atrybutów.

Replace([BusinessTitle],"Product Developer", , , "Software Engineer", , )

  • źródło: [BusinessTitle]
  • oldValue: "Deweloper produktu"
  • replacementValue: "Inżynier oprogramowania"
  • Dane wyjściowe wyrażeń: Inżynier oprogramowania

Przykład 2. Użycie parametru oldValue i szablonu w celu wstawienia ciągu źródłowego do innego ciągu templatized .

Parametr oldValue jest błędem w tym scenariuszu. W rzeczywistości jest to wartość, która zostanie zamieniona.
Załóżmy, że chcesz zawsze wygenerować identyfikator logowania w formacie <username>@contoso.com. Istnieje atrybut źródłowy o nazwie UserID i chcesz, aby ta wartość była używana dla <username> części identyfikatora logowania. W takim przypadku możesz użyć następującego wyrażenia w mapowaniu atrybutów.

Replace([UserID],"<username>", , , , , "<username>@contoso.com")

  • źródło:[UserID] = "jsmith"
  • oldValue: "<username>"
  • szablon: "<username>@contoso.com"
  • Dane wyjściowe wyrażeń: "jsmith@contoso.com"

Przykład 3. Użycie wyrażenia regexPattern i replaceValue w celu wyodrębnienia części ciągu źródłowego i zastąpienie go pustym ciągiem lub wartością niestandardową utworzoną przy użyciu wzorców wyrażeń regularnych lub nazw grup wyrażeń regularnych.

Załóżmy, że masz atrybut telephoneNumber źródłowy zawierający składniki country code i phone number oddzielony znakiem spacji. Na przykład +91 9998887777 w tym przypadku możesz użyć następującego wyrażenia w mapowaniu atrybutów, aby wyodrębnić 10-cyfrowy numer telefonu.

Replace([telephoneNumber], , "\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})", , "${phoneNumber}", , )

  • source:[telephoneNumber] = "+91 9998887777"
  • regexPattern: "\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})"
  • replacementValue: "${phoneNumber}"
  • Dane wyjściowe wyrażeń: 9998887777

Możesz również użyć tego wzorca, aby usunąć znaki i zwinąć ciąg. Na przykład poniższe wyrażenie usuwa nawiasy, kreski i znaki spacji w ciągu numeru telefonu komórkowego i zwraca tylko cyfry.

Replace([mobile], , "[()\\s-]+", , "", , )

  • Źródła:[mobile] = "+1 (999) 888-7777"
  • regexPattern: "[()\\s-]+"
  • replacementValue: "" (pusty ciąg)
  • Dane wyjściowe wyrażeń: 19998887777

Przykład 4: Wyodrębnianie części ciągu źródłowego przy użyciu regexPattern, regexGroupName i replaceValue i zastąpienie jej inną wartością literału lub pustym ciągiem.

Załóżmy, że system źródłowy ma atrybut AddressLineData z dwoma składnikami numer ulicy i nazwy ulicy. W ramach ostatniego ruchu załóżmy, że numer ulicy adresu uległ zmianie i chcesz zaktualizować tylko część numer ulicy linii adresowej. W takim przypadku możesz użyć następującego wyrażenia w mapowaniu atrybutów, aby wyodrębnić numer ulicy.

Replace([AddressLineData], ,"(?<streetNumber>^\\d*)","streetNumber", "888", , )

  • źródło:[AddressLineData] = "545 Tremont Street"
  • regexPattern: "(?<streetNumber>^\\d*)"
  • regexGroupName: "streetNumber"
  • replacementValue: "888"
  • Dane wyjściowe wyrażenia: 888 Tremont Street

Oto kolejny przykład, w którym sufiks domeny z nazwy UPN jest zastępowany pustym ciągiem w celu wygenerowania identyfikatora logowania bez sufiksu domeny.

Replace([userPrincipalName], , "(?<Suffix>@(.)*)", "Suffix", "", , )

  • source:[userPrincipalName] = "jsmith@contoso.com"
  • regexPattern: "(?<Suffix>@(.)*)"
  • regexGroupName: "Sufiks"
  • replacementValue: "" (pusty ciąg)
  • Dane wyjściowe wyrażeń: jsmith

Przykład 5: Używanie regexPattern, regexGroupName i replacementAttributeName do obsługi scenariuszy, gdy atrybut źródłowy jest pusty lub nie ma wartości.

Załóżmy, że system źródłowy ma atrybut phoneNumber. Jeśli numer telefonu jest pusty, chcesz wyodrębnić 10 cyfr atrybutu numeru komórkowego. W takim przypadku możesz użyć następującego wyrażenia w mapowaniu atrybutów.

Replace([telephoneNumber], , "\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})", "phoneNumber" , , [mobile], )

  • source:[telephoneNumber] = "" (pusty ciąg)
  • regexPattern: "\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})"
  • regexGroupName: "phoneNumber"
  • replacementAttributeName:[mobile] = "+91 8887779999"
  • Dane wyjściowe wyrażeń: 8887779999

Przykład 6. Musisz znaleźć znaki, które pasują do wartości wyrażenia regularnego i je usunąć.

Replace([mailNickname], , "[a-zA-Z_]*", , "", , )

  • source [mailNickname]
  • oldValue: "john_doe72"
  • replaceValue: ""
  • Dane wyjściowe wyrażeń: 72

Wybierz pozycjęUniqueValue

Funkcja: SelectUniqueValue(uniqueValueRule1, uniqueValueRule2, uniqueValueRule3, ...)

Opis: Wymaga co najmniej dwóch argumentów, które są unikatowymi regułami generowania wartości zdefiniowanymi przy użyciu wyrażeń. Funkcja ocenia każdą regułę, a następnie sprawdza wartość wygenerowaną pod kątem unikatowości w docelowej aplikacji/katalogu. Pierwsza znaleziona unikatowa wartość będzie zwracana. Jeśli wszystkie wartości już istnieją w obiekcie docelowym, wpis zostanie przekazany, a przyczyna zostanie zarejestrowana w dziennikach inspekcji. Nie ma górnej granicy z liczbą argumentów, które można podać.

  • Ta funkcja musi znajdować się na najwyższym poziomie i nie może być zagnieżdżona.
  • Tej funkcji nie można zastosować do atrybutów, które mają pasujący pierwszeństwo.
  • Ta funkcja jest przeznaczona tylko do tworzenia pozycji. W przypadku używania go z atrybutem ustaw właściwość Zastosuj mapowanie na wartość Tylko podczas tworzenia obiektu.
  • Ta funkcja jest obecnie obsługiwana tylko w przypadku aprowizacji użytkowników produktu Workday to Active Directory i "SuccessFactors to Active Directory User Provisioning". Nie można jej używać z innymi aplikacjami aprowizacji.
  • Wyszukiwanie LDAP wykonywane przez funkcję SelectUniqueValue w lokalna usługa Active Directory nie powoduje ucieczki znaków specjalnych, takich jak znaki diakrytyczne. Jeśli przekażesz ciąg podobny do "Jéssica Smith", który zawiera znak specjalny, wystąpią błędy przetwarzania. Zagnieżdżaj funkcję NormalizeDiacritics , jak pokazano w poniższym przykładzie, aby znormalizować znaki specjalne.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
uniqueValueRule1 ... uniqueValueRuleN Co najmniej 2 są wymagane, bez górnej granicy String Lista reguł generowania unikatowych wartości do oceny.

Generowanie unikatowej wartości atrybutu userPrincipalName (UPN)

Przykład: na podstawie nazwy i nazwiska użytkownika, nazwy środkowej i nazwiska należy wygenerować wartość atrybutu NAZWY UPN i sprawdzić jego unikatowość w docelowym katalogu usługi AD przed przypisaniem wartości do atrybutu NAZWY 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")
    )

Przykładowe dane wejściowe/wyjściowe:

  • INPUT (PreferredFirstName): "John"
  • INPUT (PreferredLastName): "Smith"
  • OUTPUT: "John.Smith@contoso.com", jeśli wartość John.Smith@contoso.com nazwy UPN nie istnieje jeszcze w katalogu
  • OUTPUT: "J.Smith@contoso.com", jeśli wartość John.Smith@contoso.com nazwy UPN już istnieje w katalogu
  • DANE WYJŚCIOWE: "Jo.Smith@contoso.com", jeśli powyższe dwie wartości nazwy UPN już istnieją w katalogu

SingleAppRoleAssignment

Funkcja: SingleAppRoleAssignment([appRoleAssignments])

Opis: Zwraca pojedynczy element appRoleAssignment z listy wszystkich elementów appRoleAssignments przypisanych do użytkownika dla danej aplikacji. Ta funkcja jest wymagana do przekonwertowania obiektu appRoleAssignments na pojedynczy ciąg nazwy roli. Najlepszym rozwiązaniem jest zapewnienie, że tylko jeden element appRoleAssignment jest przypisany do jednego użytkownika naraz. Ta funkcja nie jest obsługiwana w scenariuszach, w których użytkownicy mają wiele przypisań ról aplikacji.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
[appRoleAssignments] Wymagania String [appRoleAssignments] Obiektu.

Podział

Funkcja: Split(source, ogranicznik)

Opis: dzieli ciąg na tablicę wielowartościową przy użyciu określonego znaku ogranicznika.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
source Wymagania String wartość źródłowa do zaktualizowania.
Ogranicznik Wymagania String Określa znak, który będzie używany do dzielenia ciągu (na przykład: ",")

Dzielenie ciągu na tablicę wielowartej

Przykład: musisz pobrać rozdzielaną przecinkami listę ciągów i podzielić je na tablicę, która może zostać podłączona do atrybutu wielowartościowego, takiego jak atrybut PermissionSets usługi Salesforce. W tym przykładzie lista zestawów uprawnień została wypełniona w rozszerzeniuAttribute5 w identyfikatorze Entra firmy Microsoft.

Wyrażenie: Split([extensionAttribute5], ",")

Przykładowe dane wejściowe/wyjściowe:

  • INPUT (extensionAttribute5): "PermissionSetOne, PermissionSetTwo"
  • OUTPUT: ["PermissionSetOne", "PermissionSetTwo"]

Przestrzenie paskowe

Funkcja: StripSpaces(source)

Opis: Usuwa wszystkie znaki spacji (" ") z ciągu źródłowego.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
source Wymagania String wartość źródłowa do zaktualizowania.

Switch

Funkcja: Switch(source, defaultValue, key1, value1, key2, value2, ...)

Opis: Gdy wartość źródłowa jest zgodna z kluczem, zwraca wartość dla tego klucza. Jeśli wartość źródłowa nie jest zgodna z żadnymi kluczami, zwraca wartość defaultValue. Parametry klucza i wartości muszą zawsze znajdować się w parach. Funkcja zawsze oczekuje parzystej liczby parametrów. Funkcja nie powinna być używana dla atrybutów odwołań, takich jak menedżer.

Uwaga

Funkcja Switch wykonuje porównanie ciągów z uwzględnieniem wielkości liter dla wartości źródłowych i kluczowych. Jeśli chcesz wykonać porównanie bez uwzględniania wielkości liter, znormalizuj ciąg źródłowy przed porównaniem przy użyciu zagnieżdżonej funkcji ToLower i upewnij się, że wszystkie ciągi kluczy używają małych liter. Przykład: Switch(ToLower([statusFlag]), "0", "true", "1", "false", "0"). W tym przykładzie atrybut statusFlag źródłowy może mieć wartości ("True" / "true" / "TRUE"). Jednak funkcja Switch zawsze konwertuje ją na małe litery "true" przed porównaniem z kluczowymi parametrami.

Uwaga

Dla parametru źródłowego nie używaj zagnieżdżonych funkcji IsPresent, IsNull lub IsNullOrEmpty. Zamiast tego użyj pustego ciągu literału jako jednej z wartości klucza.
Przykład: Switch([statusFlag], "Default Value", "true", "1", "", "0"). W tym przykładzie, jeśli atrybut statusFlag źródłowy jest pusty, funkcja Switch zwróci wartość 0.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
source Wymagania String Wartość źródłowa do zaktualizowania.
Defaultvalue Opcjonalnie String Wartość domyślna, która ma być używana, gdy źródło nie jest zgodne z żadnymi kluczami. Może być pusty ciąg ("").
key Wymagania String Klucz do porównania wartości źródłowej z.
wartość Wymagania String Wartość zastępcza źródła pasującego do klucza.

Zamień wartość na podstawie wstępnie zdefiniowanego zestawu opcji

Przykład: zdefiniuj strefę czasową użytkownika na podstawie kodu stanu przechowywanego w identyfikatorze Entra firmy Microsoft. Jeśli kod stanu nie jest zgodny z żadną ze wstępnie zdefiniowanych opcji, użyj wartości domyślnej "Australia/Sydney".

Expression:Switch([state], "Australia/Sydney", "NSW", "Australia/Sydney","QLD", "Australia/Brisbane", "SA", "Australia/Adelaide")

Przykładowe dane wejściowe/wyjściowe:

  • INPUT (stan): "QLD"
  • DANE WYJŚCIOWE: "Australia/Brisbane"

ToLower

Funkcja: ToLower(źródło, kultura)

Opis: Pobiera wartość ciągu źródłowego i konwertuje ją na małe litery przy użyciu określonych reguł kultury. Jeśli nie określono informacji o kulturze , będzie ona używać niezmiennej kultury.

Jeśli chcesz ustawić istniejące wartości w systemie docelowym na małe litery, zaktualizuj schemat dla aplikacji docelowej i ustaw właściwość CaseExact na wartość "true" dla atrybutu, który cię interesuje.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
source Wymagania String Zazwyczaj nazwa atrybutu z obiektu źródłowego
Kultury Opcjonalnie String Format nazwy kultury opartej na specyfikacji RFC 4646 to languagecode2-country/regioncode2, gdzie languagecode2 to dwuliterowy kod języka, a kod kraju/regionu2 to dwuliterowy kod subkultury. Przykłady obejmują ja-JP dla języka japońskiego (Japonia) i en-US dla języka angielskiego (Stany Zjednoczone). W przypadkach, gdy kod języka dwuliterowego jest niedostępny, jest używany trzyliterowy kod pochodzący z iso 639-2.

Konwertowanie wygenerowanej wartości userPrincipalName (UPN) na małe litery

Przykład: chcesz wygenerować wartość nazwy UPN, łącząc pola źródłowe PreferredFirstName i PreferredLastName i konwertując wszystkie znaki na małe litery.

ToLower(Join("@", NormalizeDiacritics(StripSpaces(Join(".", [PreferredFirstName], [PreferredLastName]))), "contoso.com"))

Przykładowe dane wejściowe/wyjściowe:

  • INPUT (PreferredFirstName): "John"
  • INPUT (PreferredLastName): "Smith"
  • DANE WYJŚCIOWE: "john.smith@contoso.com"

ToUpper

Funkcja: ToUpper(źródło, kultura)

Opis: Pobiera wartość ciągu źródłowego i konwertuje ją na wielkie litery przy użyciu określonych reguł kultury. Jeśli nie określono informacji o kulturze , będzie ona używać niezmiennej kultury.

Jeśli chcesz ustawić istniejące wartości w systemie docelowym na wielkie litery, zaktualizuj schemat dla aplikacji docelowej i ustaw właściwość CaseExact na wartość "true" dla atrybutu, który cię interesuje.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
source Wymagania String Zazwyczaj nazwa atrybutu z obiektu źródłowego.
Kultury Opcjonalnie String Format nazwy kultury opartej na specyfikacji RFC 4646 to languagecode2-country/regioncode2, gdzie languagecode2 to dwuliterowy kod języka, a kod kraju/regionu2 to dwuliterowy kod subkultury. Przykłady obejmują ja-JP dla języka japońskiego (Japonia) i en-US dla języka angielskiego (Stany Zjednoczone). W przypadkach, gdy kod języka dwuliterowego jest niedostępny, jest używany trzyliterowy kod pochodzący z iso 639-2.

Word

Funkcja: Word(String,WordNumber,Ograniczniki)

Opis: Funkcja programu Word zwraca wyraz zawarty w ciągu na podstawie parametrów opisujących ograniczniki do użycia i liczbę wyrazów do zwrócenia. Każdy ciąg znaków w ciągu rozdzielanym jedną z znaków ograniczników jest identyfikowany jako wyrazy:

Jeśli liczba < 1, zwraca pusty ciąg. Jeśli ciąg ma wartość null, zwraca pusty ciąg. Jeśli ciąg zawiera wyrazy mniejsze niż liczba lub ciąg nie zawiera żadnych wyrazów zidentyfikowanych przez ograniczniki, zwracany jest pusty ciąg.

Parametry:

Nazwisko Wymagane/powtarzane Type Uwagi
ciąg Wymagania Atrybut wielowarty Ciąg, z który ma zwrócić słowo.
Numer programu Word Wymagania Integer Liczba identyfikująca, który numer wyrazu powinien zwracać
Ograniczniki Wymagania String Ciąg reprezentujący ograniczników, które powinny być używane do identyfikowania wyrazów

Przykład:Word("The quick brown fox",3," ")

Zwraca wartość "brown".

Word("This,string!has&many separators",3,",!&#")

Zwraca wartość "has".


Przykłady

Ta sekcja zawiera więcej przykładów użycia funkcji wyrażeń.

Usuwanie znanej nazwy domeny

Usuń znaną nazwę domeny z adresu e-mail użytkownika, aby uzyskać nazwę użytkownika. Jeśli na przykład domena ma wartość "contoso.com", możesz użyć następującego wyrażenia:

Expression:Replace([mail], "@contoso.com", , ,"", ,)

Przykładowe dane wejściowe/wyjściowe:

  • INPUT (poczta): "john.doe@contoso.com"
  • DANE WYJŚCIOWE: "john.doe"

Generowanie aliasu użytkownika przez łączenie części pierwszego i nazwiska

Wygeneruj alias użytkownika, przyjmując pierwsze trzy litery i imię użytkownika i pięć pierwszych liter nazwiska użytkownika.

Expression:Append(Mid([givenName], 1, 3), Mid([surname], 1, 5))

Przykładowe dane wejściowe/wyjściowe:

  • INPUT (givenName): "John"
  • INPUT (nazwisko): "Doe"
  • DANE WYJŚCIOWE: "JohDoe"

Dodaj przecinek między nazwiskiem a nazwiskiem.

Dodaj przecinek między nazwiskiem a nazwiskiem.

Expression:Join(", ", "", [surname], [givenName])

Przykładowe dane wejściowe/wyjściowe:

  • INPUT (givenName): "John"
  • INPUT (nazwisko): "Doe"
  • DANE WYJŚCIOWE: "Doe, John"

Wygeneruj identyfikator użytkownika na podstawie identyfikatora obiektu Entra firmy Microsoft. Usuń wszystkie litery z identyfikatora i dodaj 1000 na początku.

To wyrażenie umożliwia wygenerowanie identyfikatora użytkownika rozpoczynającego się od 1000 i prawdopodobnie będzie unikatowe.

Wyrażenie: Join("", 1000, Replace(ConvertToUTF8Hex([objectId]), , "[a-zA-Z_]*", , "", "", , )

Przykładowe dane wejściowe/wyjściowe:

  • DANE WEJŚCIOWE: "d05e47b1-3909-445a-ba5e-ca60cbc0e4b4"
  • DANE WYJŚCIOWE: "100064303565343762312333930392343435612626135652636136306362633065346234"