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:
- Atrybuty, które muszą być ujęte w nawiasy kwadratowe. Na przykład: [attributeName]
- Stałe ciągów, które muszą być ujęte w cudzysłowy. Na przykład: "Stany Zjednoczone"
- 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. |
przyrostek | 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] sprzeciwiać się. |
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 | Wyrażenie | 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 ma 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 jest dodawany 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 po 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). |
data/godzina | 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 |
Pobierz datę 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: "00aa0aa-bb11-cc22-dd33-44e4e4ee4ee"
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 | Wyrażenie | Wyrażenie do oceny |
Przykład 1: Nie przepływaj atrybutu, jeśli ma wartość null
IgnoreFlowIfNullOrEmpty([department])
Powyższe wyrażenie odrzuca atrybut działu z przepływu aprowizacji, jeśli ma wartość null lub jest pusty.
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 żadnych wartości wymienionych w funkcji Switch, funkcja ** zwraca pusty ciąg, a atrybut personalTitle nie jest uwzględniony w przepływie aprowizacji do 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")
- Przykłady nieobsługiwanych wyrażeń IIF:
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 | Wyrażenie | 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. Daje to 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 | Wyrażenie | 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 | Wyrażenie | 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 | Wyrażenie | Wyrażenie do oceny |
Towar
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ść jest oddzielona ciągiem separatora.
Jeśli jedna z wartości źródłowych jest atrybutem wielowartościowym, każda wartość w tym atrybucie jest 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 | Œ | Ø, Ø Jej Ø, Ś | Œ |
ř, 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 zamapować 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, aby dopasować ustawienia regionalne.
NumFromDate(Join("", FormatDateTime([ContractEndDate], ,"yyyy-MM-ddzzz", "yyyy-MM-dd"), " 23:59:59-08:00"))
Przykład SuccessFactors: Zakładając, że chcesz mapować atrybut endDate z SuccessFactors, który ma format M/d/rrrr hh:mm:ss tt na accountExpires 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
- Znaki łącznikaPunctuation, takie jak podkreślenie
- Znaki dashPunctuation, takie jak kreska i łącznik (w tym znaki takie jak En Dash, Em Dash, podwójny łącznik itd.)
- Znaki OpenPunctuation i ClosePunctuation, które występują w parach, takich jak nawias nawiasu, nawias klamrowy, nawias kątowy itd.
- InitialQuotePunctuation i FinalQuotePunctuation znaki, takie jak pojedyncze cudzysłowy, cudzysłowy podwójne i cudzysłowy angular.
- Inne znaki punktuacji , takie jak wykrzyknik, znak liczbowy, znak procentowy, znak ampersand, gwiazdka, przecinek, kropka, dwukropek, średnik itd.
- Znaki mathSymbol , takie jak znak plus, znak mniejszy niż i większy niż znak, linia pionowa, tylda, znak równości itd.
- CurrencySymbol znaki, takie jak znak dolara, znak centa, znak funta, znak euro itd.
- ModyfikatorSymbol znaków, takich jak macron, akcenty, groty strzałek itd.
- Inne znaki, takie jak znak praw autorskich, znak stopnia, zarejestrowany znak itd.
- 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. Korzystając z funkcji PCase, możesz przekonwertować nazwę na właściwą wielkość liter, jak pokazano tutaj.
Wyrażenie | 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 szablonie wartością źródłową
Po podaniu wartości regexPattern i replacementValue :
- Funkcja stosuje wyrażenie regexPattern do ciągu źródłowego i 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ębniamy wartość nazwanej grupy regex z elementu replacementAttributeName i zwracamy 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 szukamy wartości oldValue wewnątrz szablonu i zamieniamy ją na wartość ź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 następujące wyrażenie usuwa nawiasy, kreski i znaki spacji w ciągu numeru telefonu komórkowego i zwraca tylko cyfry.
Replace([mobile], , "[()\\s-]+", , "", , )
- źródło:
[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ść jest zwracana. Jeśli wszystkie wartości już istnieją w obiekcie docelowym, wpis jest deponowany, 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 do użycia z tymi aplikacjami:
- Aprowizowanie użytkowników produktu Workday w usłudze Active Directory
- SuccessFactors do aprowizacji użytkowników usługi Active Directory
- Aprowizowanie oparte na interfejsie API w celu lokalna usługa Active Directory
SelectUniqueValue nie jest obsługiwana do użycia 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 taki jak "Jéssica Smith", który zawiera znak specjalny, wystąpią błędy przetwarzania. Zagnieżdżanie funkcji NormalizeDiacritics , jak pokazano w tym 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] sprzeciwiać się. |
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 jest 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ń jest wypełniana 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 zwraca wartość 0.
Uwaga
Problem: Usługa aprowizacji niepoprawnie ustawiła wartość atrybutu na null w systemie docelowym podczas korzystania z instrukcji switch.
Rozwiązanie: użyj instrukcji IIF zamiast instrukcji switch, aby zapobiec nieoczekiwanym wartościom null lub użyć funkcji IgnoreFlowIfNullOrEmpty z instrukcją switch. Na przykład switch([companyName], "External", "Company A", "A", "Company B", "B") powinien być reprezentowany jako IIF([companyName] = "Company A", "A", IIF([companyName] = "Company B", "B", "External")). W przypadkach, gdy wartość domyślna jest atrybutem, użyj wyrażenia, takiego jak IgnoreFlowIfNullOrEmpty(switch([companyName], [companyName], "Company A", "A", "Company B", "B")).
Główna przyczyna: Ten problem jest specyficzny dla scenariuszy, w których identyfikator Entra firmy Microsoft jest systemem źródłowym, a instrukcja switch zawiera wartość domyślną.
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 żadnych informacji o kulturze , zostanie użyta niezmienna kultura.
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 |
kultura | 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 żadnych informacji o kulturze , zostanie użyta niezmienna kultura.
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. |
kultura | 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: "00aa0aa-bb11-cc22-dd33-44ee4ee4e4ee4ee"
- DANE WYJŚCIOWE: "100064303565343762312333930392343435612626135652636136306362633065346234"
Powiązane artykuły
- Automatyzowanie aprowizacji użytkowników/anulowania aprowizacji w aplikacjach SaaS
- Dostosowywanie mapowań atrybutów na potrzeby aprowizacji użytkowników
- Filtry określania zakresu na potrzeby aprowizacji użytkowników
- Używanie programu SCIM do włączania automatycznej aprowizacji użytkowników i grup z identyfikatora Entra firmy Microsoft do aplikacji
- Powiadomienia dotyczące aprowizacji konta
- Lista samouczków dotyczących sposobu integrowania aplikacji SaaS