Dokumentacja dla deweloperów pakietu BHOLD dla Microsoft Identity Manager 2016 r.
Moduł BHOLD-core może przetwarzać polecenia skryptów. Można to zrobić bezpośrednio przy użyciu bscript.dll w projekcie platformy .NET. Interakcja z usługą internetową b1scriptservice.asmx.
Przed wykonaniem skryptu należy zebrać wszystkie informacje w skrypcie, aby utworzyć ten skrypt. Te informacje można zebrać z następujących źródeł:
- Dane wejściowe użytkownika
- Dane pakietu BHOLD
- Aplikacje
- Inne
Dane pakietu BHOLD można pobrać przy użyciu funkcji GetInfo obiektu skryptu. Istnieje pełna lista poleceń, które mogą przedstawiać wszystkie dane przechowywane w bazie danych BHOLD. Jednak prezentowane dane podlegają uprawnienia do wyświetlania zalogowanego użytkownika. Wynik jest w postaci dokumentu XML, który można przeanalizować.
Innym źródłem informacji może być jedna z aplikacji kontrolowanych przez usługę BHOLD. Przystawka aplikacji ma specjalną funkcję FunctionDispatch, która może służyć do prezentowania informacji specyficznych dla aplikacji. Jest on również przedstawiany jako dokument XML.
Na koniec, jeśli nie ma innego sposobu, skrypt może zawierać polecenia bezpośrednio do innych aplikacji lub systemów. NoThenstallation dodatkowego oprogramowania na serwerze BHOLD może podważyć bezpieczeństwo całego systemu.
Wszystkie te informacje są umieszczane w jednym dokumencie XML i przypisywane do obiektu skryptu BHOLD. Obiekt łączy ten dokument ze wstępnie zdefiniowaną funkcją. Wstępnie zdefiniowana funkcja jest dokumentem XSL, który tłumaczy dokument wejściowy skryptu na dokument polecenia BHOLD.
Polecenia są wykonywane w tej samej kolejności co w dokumencie. Jeśli jedna funkcja zakończy się niepowodzeniem, wszystkie wykonane polecenia zostaną wycofane.
Obiekt skryptu
W tej sekcji opisano sposób używania obiektu script.
Pobieranie informacji dotyczących pakietu BHOLD
Funkcja GetInfo służy do pobierania informacji z dostępnych danych w systemie autoryzacji BHOLD. Funkcja wymaga nazwy funkcji i ostatecznie co najmniej jednego parametru. Jeśli ta funkcja powiedzie się, obiekt lub kolekcja BHOLD jest zwracana w postaci dokumentu XML.
Jeśli funkcja nie powiedzie się, funkcja GetInfo zwraca pusty ciąg lub błąd. Opis i liczba błędów mogą służyć do uzyskania dodatkowych informacji o niepowodzeniu.
Funkcja GetInfo "FunctionDispatch" może służyć do pobierania informacji z aplikacji kontrolowanej przez system BHOLD. Ta funkcja wymaga trzech parametrów: identyfikator aplikacji, funkcję dispatch zdefiniowaną w środowisku ASI i dokument XML z informacjami pomocniczymi dla środowiska ASI. Jeśli funkcja zakończy się pomyślnie, wynik będzie dostępny w formacie XML w obiekcie wynikowym.
Poniższy fragment kodu to prosty przykład kodu w języku C# getInfo:
ScriptProcessor myScriptProcessor = new ScriptProcessor();
myScriptProcessor.Initializae("CORP\\b1user");
myScriptProcessor.GetInfo("OrgUnit", "1");
Podobnie dostęp do obiektu BScript można również uzyskać za pośrednictwem usługi b1scriptservice
internetowej . W tym celu należy dodać odwołanie do sieci Web do projektu przy użyciu http://< server>:5151/BHOLD/Core/b1scriptservice.asmx, gdzie <serwer jest serwerem> z zainstalowanymi plikami binarnymi BHOLD. Aby uzyskać więcej informacji, zobacz Dodawanie odwołania usługi internetowej do projektu programu Visual Studio.
W poniższym przykładzie pokazano, jak używać funkcji GetInfo z usługi internetowej. Ten kod pobiera jednostkę organizacyjną z identyfikatorem OrgID 1, a następnie wyświetla nazwę tej jednostki organizacyjnej na ekranie.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
namespace bhold_console
{
class Program
{
static void Main(string[] args)
{
var bholdService = new BHOLDCORE.B1ScriptService();
bholdService.Url = "http://app1.corp.contoso.com:5151/BHOLD/Core/b1scriptservice.asmx";
string orgname= "";
if (args.Length == 3)
{
//Use explicit credentials from command line
bholdService.UseDefaultCredentials = false;
bholdService.Credentials = new System.Net.NetworkCredential(args[0], args[1], args[2]);
bholdService.PreAuthenticate = true;
}
else
{
bholdService.UseDefaultCredentials = true;
bholdService.PreAuthenticate = true;
}
//Load BHOLD information into an xml document and loop through document to find the bholdDescription value
var myOrgUnit = new System.Xml.XmlDocument();
myOrgUnit.LoadXml(bholdService.GetInfo("OrgUnit","1","","");
XmlNodeList myList = myOrgUnit.SelectNodes(("//item");
foreach (XmlNode myNode in myList)
{
for (int i = 0; i < myNode.ChildNodes.Count; i++)
{
if (myNode.ChildNodes[i].InnerText.ToString() == "bholdDescription")
{
orgname = myNode.ChildNodes[i + 1].InnerText.ToString();
}
}
}
System.Console.WriteLine("The Organizational Unit Name is: " + orgname);
}
}
}
Poniższy przykład w języku VBScript używa usługi internetowej za pośrednictwem protokołu SOAP i getInfo. Aby uzyskać dodatkowe przykłady protokołu SOAP 1.1, SOAP 1.2 i HTTP POST, zobacz sekcję Dokumentacja zarządzana pakietu BHOLD lub możesz przejść do usługi internetowej bezpośrednio z przeglądarki i wyświetlić je tam.
Dim SOAPRequest
Dim SOAPParameters
Dim SOAPResponse
Dim xmlhttp
Set xmlhttp = CreateObject("Microsoft.XMLHTTP")
xmlhttp.open "POST", "http://app1.corp.contoso.com:5151/BHOLD/Core/b1scriptservice.asmx", False, "CORP\Administrator", "abc123*2k"
xmlhttp.setRequestHeader "Content-type", "text/xml; charset=utf-8"
xmlhttp.setRequestHeader "SOAPAction", "http://B1/B1ScriptService/GetInfo"
SOAPRequest = "<?xml version='1.0' encoding='utf-8'?> <soap:Envelope" & vbCRLF
SOAPRequest = SOAPRequest & " xmlns:xsi=""http://" & vbCRLF
SOAPRequest = SOAPRequest & " www.w3.org/2001/XMLSchema-instance""" & vbCRLF
SOAPRequest = SOAPRequest & " xmlns:xsd=""http://www.w3.org/2001/XMLSchema""" & vbCRLF
SOAPRequest = SOAPRequest & " xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">" & vbCRLF
SOAPRequest = SOAPRequest & " <soap:Body>" & vbCRLF
SOAPRequest = SOAPRequest & " <GetInfo xmlns=""http://B1/B1ScriptService"">" & vbCRLF
SOAPRequest = SOAPRequest & " <functionName>OrgUnit</functionName>" & vbCRLF
SOAPRequest = SOAPRequest & " <parameter1>1</parameter1>" & vbCRLF
SOAPRequest = SOAPRequest & " <parameter2></parameter2>" & vbCRLF
SOAPRequest = SOAPRequest & " <parameter3></parameter3>" & vbCRLF
SOAPRequest = SOAPRequest & " </GetInfo>" & vbCRLF
SOAPRequest = SOAPRequest & " </soap:Body>" & vbCRLF
SOAPRequest = SOAPRequest & " </soap:Envelope>"
MsgBox SOAPRequest
xmlhttp.send SOAPRequest
SOAPResponse = xmlhttp.responseText
MsgBox SOAPResponse
Wykonywanie skryptów
Funkcja ExecuteScript obiektu BScript może służyć do wykonywania skryptów. Ta funkcja wymaga dwóch parametrów. Pierwszy parametr to dokument XML, który zawiera informacje niestandardowe, które mają być używane przez skrypt. Drugi parametr to nazwa wstępnie zdefiniowanego skryptu do użycia. W katalogu skryptów wstępnie zdefiniowanych BHOLD tutaj powinien być dokument XSL o tej samej nazwie co funkcja, ale z rozszerzeniem xsl.
Jeśli funkcja nie powiedzie się, funkcja ExecuteScript zwraca wartość False. Opis błędu i liczba mogą służyć do poznania, co poszło nie tak. Poniżej przedstawiono przykład użycia metody internetowej ExecuteXML. Ta metoda wywołuje metodę ExecuteScript.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Sample
{
class Program
{
static void Main(string[] args)
{
var bholdService = new BHOLDCORE.B1ScriptService();
bholdService.Url = "http://app1.corp.contoso.com:5151/BHOLD/Core/b1scriptservice.asmx";
if (args.Length == 3)
{
//Use explicit credentials from command line
bholdService.UseDefaultCredentials = false;
bholdService.Credentials = new System.Net.NetworkCredential(args[0], args[1], args[2]);
bholdService.PreAuthenticate = true;
}
else
{
bholdService.UseDefaultCredentials = true;
bholdService.PreAuthenticate = true;
}
System.Console.WriteLine( "Add user #3 to role #44, result: {0}", bholdService.ExecuteXml(roleAddUser("44", "3")) );
System.Console.WriteLine("Add user D1 to role 'MR-OU2 No Users', result: {0}", bholdService.ExecuteXml(roleAddUser("MR-OU2 No Users", "D1")));
}
private static System.Xml.XmlNode roleAddUser(string roleId, string userId)
{
var script = new System.Xml.XmlDocument();
script.LoadXml(string.Format("<functions>"
+" <function name='roleadduser' roleid='{0}' userid='{1}' />"
+"</functions>",
roleId,
userId)
);
return script.DocumentElement;
BholdScriptResult
Ta funkcja GetInfo jest dostępna po wykonaniu funkcji executescript . Funkcja zwraca ciąg sformatowany w formacie XML zawierający kompletny raport wykonywania. Węzeł Skrypt zawiera strukturę XML wykonanego skryptu.
Dla każdej funkcji, która kończy się niepowodzeniem podczas wykonywania skryptu, funkcja node jest dodawana z nazwą węzłów. ExecuteXML i Błąd jest dodawany na końcu dokumentu wszystkie wygenerowane identyfikatory.
Zwróć uwagę, że dodawane są tylko funkcje, które zawierają błąd. Liczba błędów "0" oznacza, że funkcja nie jest wykonywana.
<Bhold>
<Script>
<functions>
<function name="OrgUnitadd" description="OrgUnit1" parentid="root" orgtypeid="root" return="@ID@"/>
<function name="roleaddOrgUnit" OrgUnitid="OrgUnit1" roleid="Role1_OrgUnit1" return="@ID@"/>
</functions>
</Script>
<Function>
<Name>OrgUnitadd</Name>
<ExecutedXML>
<function name="OrgUnitadd" description="OrgUnit1" parentid="root" orgtypeid="root" return="@ID@"/>
</ExecutedXML>
<Error Number="5" Description="Violation of UNIQUE KEY constraint 'IX_OrgUnits'. Cannot insert duplicate key in object 'dbo.OrgUnits'.
The statement has been terminated."/>
</Function>
<Function>
<Name>roleaddOrgUnit</Name>
<ExecutedXML>
<function name="roleaddOrgUnit" OrgUnitid="OrgUnit1" roleid="Role1_OrgUnit1" return="@ID@"/>
</ExecutedXML>
<Error Number="0" Description=""/>
</Function>
<IDS>
<ID name="@ID@">35</ID>
</IDS>
</Bhold>
Parametry identyfikatora
Parametry identyfikatorów otrzymują specjalne traktowanie. Wartości nieliczbowe są używane jako wartość wyszukiwania do lokalizowania odpowiednich jednostek w magazynie danych BHOLD. Gdy wartość wyszukiwania nie jest unikatowa, zwracana jest pierwsza jednostka zgodna z wartością wyszukiwania.
Aby odróżnić wartości wyszukiwania liczbowego od identyfikatorów, można użyć prefiksu. Gdy pierwsze sześć znaków wartości wyszukiwania jest równe "no_id:", te znaki są usuwane przed zastosowaniem wartości do wyszukiwania. Można użyć symboli wieloznacznych SQL '%'.
Następujące pola są używane z wartością wyszukiwania:
Typ identyfikatora | Pole wyszukiwania |
---|---|
OrgUnitID | Opis |
identyfikator roli | Opis |
identyfikator zadania | Opis |
userID | DefaultAlias |
Dostęp do skryptu i uprawnienia
Kod po stronie serwera na stronach active server są używane do wykonywania skryptów. W związku z tym dostęp do skryptu oznacza dostęp do tych stron. System BHOLD przechowuje informacje o punktach wejścia stron niestandardowych. Te informacje obejmują stronę początkową i opis funkcji (wiele języków powinno być obsługiwanych).
Użytkownik ma uprawnienia do wprowadzania stron niestandardowych i wykonywania skryptu. Każdy punkt wejścia jest przedstawiany jako zadanie. Każdy użytkownik, który uzyskał to zadanie za pośrednictwem roli lub jednostki, może wykonać odpowiednią funkcję.
Nowa funkcja w menu przedstawia wszystkie funkcje niestandardowe, które mogą być wykonywane przez użytkownika. Ponieważ skrypt może wykonywać akcje w systemie BHOLD w ramach tożsamości innej niż zalogowany użytkownik. Możliwe jest nadanie uprawnień do wykonywania jednej konkretnej akcji bez nadzoru nad żadnym obiektem. Może to być na przykład przydatne dla pracownika, który może wprowadzać nowych klientów tylko do firmy. Te skrypty mogą być również używane do tworzenia stron samodzielnego rejestrowania.
Skrypt polecenia
Skrypt polecenia zawiera listę funkcji wykonywanych przez system BHOLD. Lista jest napisana w dokumencie XML, który jest zgodny z następującymi definicjami:
Skrypt polecenia | <functions>functions</functions> |
---|---|
— funkcje | function {function} |
— funkcja | <function name="functionName" functionParameters [return] (/> | > parameterList </ function>) |
Functionname | Prawidłowa nazwa funkcji zgodnie z opisem w poniższych sekcjach. |
functionParameters | { functionParameter } |
functionParameter | parameterName = "parameterValue" |
Parametername | Prawidłowa nazwa parametru. |
Parametervalue | @variable@ | Wartość |
wartość | Prawidłowa wartość parametru. |
parameterList | <parameters> {parameterItem} </parameters> |
parameterItem | <parameter name="parameterName"> parameterValue </parameter> |
return | return="@variable@" |
zmienna | Nazwa zmiennej niestandardowej. |
Kod XML zawiera następujące tłumaczenia znaków specjalnych:
XML | Znak |
---|---|
& |
& |
< |
< |
> |
> |
" |
" |
' |
' |
Te znaki XML mogą być używane w identyfikatorach, ale nie są zalecane.
Poniższy kod przedstawia przykład prawidłowego dokumentu polecenia z trzema funkcjami:
<functions>
<functionname="OrgUnitAdd" parentID="34" description="Acme Inc." orgtypeID="5" return="@UnitID@" />
<function name="UserAdd" description="John Doe" alias="jdoe" languageID="1" OrgUnitID="@UnitID@" />
<function name="TaskAddFile" taskID="93" path="/customers/purchase">
<parameters>
<parameter name="history"> True</parameter>
</parameters>
</function>
</functions>
Funkcja OrgUnitAdd przechowuje identyfikator utworzonej jednostki w zmiennej o nazwie UnitID. Ta zmienna jest używana jako dane wejściowe dla funkcji UserAdd. Wartość zwracana tej funkcji nie jest używana. W poniższych sekcjach opisano wszystkie dostępne funkcje, wymagane parametry i ich wartości zwracane.
Wykonywanie funkcji
W tej sekcji opisano sposób używania funkcji execute.
ABAAttributeRuleAdd
Utwórz nową regułę atrybutu dla określonego typu atrybutu. Reguły atrybutów mogą być połączone tylko z jednym typem atrybutu.
Określona reguła atrybutu może być połączona ze wszystkimi możliwymi typami atrybutów.
Nie można zmienić właściwości RuleType za pomocą polecenia "ABAattributeruletypeupdate". Wymaga, aby opis atrybutu był unikatowy.
Argumenty | Typ |
---|---|
Opis | Tekst |
RuleType | Określ rodzaj reguły atrybutu. W zależności od rodzaju reguły atrybutu należy uwzględnić inne argumenty. Następujące wartości typu reguły są prawidłowe:
|
InvertResult | ["0"|"1"|"N"|"Y"] |
AttributeTypeID | Tekst |
Argumenty opcjonalne | Typ |
---|---|
Operator | Tekst Uwaga: ten argument jest obowiązkowy, jeśli parametr RuleType ma wartość 1 lub 4. Możliwe wartości to "=", "<" lub ">". Tagi XML muszą używać tagów ">" dla ">" i "<" dla "<". |
Rangemin | Liczba Uwaga: ten argument jest obowiązkowy, jeśli parametr RuleType ma wartość 3. |
Rangemax | Liczba Uwaga: ten argument jest obowiązkowy, jeśli parametr RuleType ma wartość 3. |
Wartość | Tekst Uwaga: ten argument jest obowiązkowy, jeśli parametr RuleType ma wartość 0, 1 lub 4. Argument musi być wartością liczbową lub alfanumeryczną. |
Zwracany typ AttributeRuleID | Tekst |
applicationadd
Tworzy nową aplikację, zwraca identyfikator nowej aplikacji.
Argumenty | Typ |
---|---|
description (opis) | |
Maszyny | |
moduł | |
parametr | |
Protokół | |
nazwa użytkownika | |
hasło | |
svroleID (opcjonalnie) | Jeśli ten argument nie jest obecny, zostanie użyta rola nadzorcy bieżącego użytkownika. |
Applicationaliasformula (opcjonalnie) | Formuła aliasu służy do tworzenia aliasu dla użytkownika, gdy jest on przypisany do uprawnienia aplikacji. Alias jest tworzony, jeśli użytkownik nie ma jeszcze aliasu dla tej aplikacji. Jeśli żadna wartość nie ma podanego domyślnego aliasu użytkownika, jest używany jako alias aplikacji. Formuła jest sformatowana jako [<<objecttype>>.<<nameofobjecttypeattribute>>(startindexoffset,length offset)] . Przesunięcie jest opcjonalne. Można używać tylko atrybutów użytkowników i aplikacji. Można użyć wolnego tekstu. Zastrzeżone znaki to lewy nawias kwadratowy ([) i prawy nawias kwadratowy (]). Na przykład: [Application.bholdDescription]\[User.bholdDefAlias(1,5)] . |
Typ zwracany | Identyfikator nowej aplikacji. |
AttributeSetValue
Ustawia wartość typu atrybutu połączonego z typem obiektu. Wymaga, aby opisy typu obiektu i typu atrybutu są unikatowe.
Argumenty | Typ |
---|---|
ObjectTypeID | Tekst |
ObjectID | Tekst |
AttributeTypeID | Tekst |
Wartość | Tekst |
Typ zwracany | Typ |
AttributeTypeAdd
Wstawia nowy typ atrybutu/typ właściwości.
Argumenty | Typ |
---|---|
DataTypeID | Tekst |
Opis (=Tożsamość) | Tekst Uwaga: nie można używać słów zarezerwowanych, w tym wyrazów "a", "frm", "id", "usr" i "bhold". |
Maxlength | Liczba w [1,..,255] |
ListOfValues (wartość logiczna) | ["0"|"1"|"N"|"Y"] |
Defaultvalue | Tekst |
Typ zwracany | Typ |
AttributeTypeID | Tekst |
AttributeTypeSetAdd
Wstawia nowy zestaw typów atrybutów. Wymaga, aby opis zestawu typów atrybutów był unikatowy.
Argumenty | Typ |
---|---|
Opis (=Tożsamość) | Tekst |
Typ zwracany | Typ |
AttributeTypeSetID | Tekst |
AttributeTypeSetAddAttributeType
Wstawia nowy typ atrybutu w istniejącym zestawie typów atrybutów. Wymaga, aby opisy zestawu typów atrybutów i typu atrybutu są unikatowe.
Argumenty | Typ |
---|---|
AttributeTypeSetID | Tekst |
AttributeTypeID | Tekst |
Zamówienie | Liczba |
Locationid | Tekst Uwaga: lokalizacja to "group" lub "single". |
Obowiązkowy | ["0"|"1"|"N"|"Y"] |
Typ zwracany | Typ |
ObjectTypeAddAttributeTypeSet
Dodaje typ atrybutu ustawiony na typ obiektu. Wymaga, aby opis typu obiektu i zestaw typów atrybutów był unikatowy. Typy obiektów to: System, OrgUnit, User, Task.
Argumenty | Typ |
---|---|
ObjectTypeID | Tekst |
AttributeTypeSetID | Tekst |
Zamówienie | Liczba |
Widoczne |
|
Typ zwracany | Typ |
OrgUnitadd
Tworzy nową jednostkę organizacyjną, zwraca identyfikator nowej jednostki organizacyjnej.
Argumenty | Typ |
---|---|
description (opis) | |
orgtypeID | |
Parentid | |
OrgUnitinheritedroles (opcjonalnie) | |
Typ zwracany | Typ |
Identyfikator nowej lekcji | Parametr OrgUnitinheritedroles ma wartość tak lub nie. |
OrgUnitaddsupervisor
Udostępnij użytkownikowi nadzorcę jednostki organizacyjnej.
Argumenty | Typ |
---|---|
svroleID | Można również użyć argumentu userID. W tym przypadku jest wybrana domyślna rola nadzorcy. Domyślna rola nadzorcy ma nazwę taką jak __svrole , po której następuje liczba. Argument userID może służyć do zapewnienia zgodności z poprzednimi wersjami. |
OrgUnitID |
OrgUnitadduser
Utwórz użytkownika członka jednostki organizacyjnej.
Argumenty | Typ |
---|---|
userID | |
OrgUnitID |
OrgUnitdelete
Usuwa jednostkę organizacyjną.
Argumenty | Typ |
---|---|
OrgUnitID |
OrgUnitdeleteuser
Usuwa użytkownika jako członka jednostki organizacyjnej.
Argumenty | Typ |
---|---|
userID | |
OrgUnitID |
roleadd
Tworzy nową rolę.
Argumenty | Typ |
---|---|
Opis | |
svrole | |
svroleID (opcjonalnie) | Jeśli ten argument nie jest obecny, zostanie użyta rola nadzorcy bieżącego użytkownika. |
ContextAdaptable (opcjonalnie) | ["0","1","N","Y"] |
MaxPermissions (opcjonalnie) | Liczba całkowita |
MaxRoles (opcjonalnie) | Liczba całkowita |
MaxUsers (opcjonalnie) | Liczba całkowita |
Typ zwracany | Typ |
Identyfikator nowej roli |
roleaddOrgUnit
Przypisuje rolę do jednostki organizacyjnej.
Argumenty | Typ |
---|---|
OrgUnitID | identyfikator roli |
inheritThisRole | Wartość "true" lub "false" wskazuje, czy rola jest proponowana jednostkom bazowym. |
roleaddrole
Przypisuje rolę jako podrolę innej roli.
Argumenty | Typ |
---|---|
identyfikator roli | |
subRoleID |
roleaddsupervisor
Ustaw użytkownika na nadzorcę roli.
Argumenty | Typ |
---|---|
svroleID | Można również użyć argumentu userID. W takim przypadku jest wybrana domyślna rola nadzorcy. Domyślna rola nadzorcy ma nazwę taką jak __svrole , po której następuje liczba. Argument userID może służyć do zapewnienia zgodności z poprzednimi wersjami. |
identyfikator roli |
roleadduser
Przypisuje rolę użytkownikowi. Rola nie może być rolą dostosowywalną do kontekstu, gdy nie podano identyfikatora kontekstu.
Argumenty | Typ |
---|---|
userID | |
identyfikator roli | |
durationType (opcjonalnie) | Może zawierać wartości "free", "hours" i "days". |
durationLength (opcjonalnie) | Wymagane, gdy parametr durationType ma wartość "hours" lub "days". powinna zawierać wartość całkowitą dla liczby godzin lub dni przypisanych do użytkownika. |
start (opcjonalnie) | Data i godzina przypisania roli. Gdy ten atrybut zostanie pominięty, rola zostanie przypisana natychmiast. Format daty to "RRRR-MM-DDThh:nn:ss", gdzie wymagany jest tylko rok, miesiąc i dzień. na przykład "2004-12-11" i "2004-11-28T08:00" są prawidłowymi wartościami. |
end (opcjonalnie) | Data i godzina odwołania roli. Po podaniu parametru durationType i durationLength ta wartość jest ignorowana. Format daty to "RRRR-MM-DDThh:nn:ss", gdzie wymagany jest tylko rok, miesiąc i dzień. na przykład "2004-12-11" i "2004-11-28T08:00" są prawidłowymi wartościami. |
linkreason | Wymagane po podaniu wartości rozpoczęcia, zakończenia lub czasu trwania, w przeciwnym razie zignorowane. |
contextId (opcjonalnie) | Identyfikator jednostki organizacyjnej, wymagany tylko dla ról z możliwością dostosowania kontekstu. |
roledelete
Usuwa rolę.
Argumenty | Typ |
---|---|
identyfikator roli |
roledeleteuser
Usuwa przypisanie roli do użytkownika. Odziedziczone role przez użytkownika są odwoływane przez to polecenie.
Argumenty | Typ |
---|---|
userID | |
identyfikator roli | |
contextID (opcjonalnie) |
roleproposeOrgUnit
Proponuje rolę, która ma zostać przypisana do członków i jednostki organizacyjnej organizacji.
Argumenty | Typ |
---|---|
OrgUnitID | |
identyfikator roli | |
durationType (opcjonalnie) | Może zawierać wartości "free", "hours" i "days". |
durationLength | Wymagane, gdy parametr durationType ma wartość "hours" lub "days", powinien zawierać wartość całkowitą dla liczby godzin lub dni, które rola jest przypisana użytkownikowi. |
durationFixed | Wartość "true" lub "false" wskazuje, czy przypisanie tej roli użytkownikowi powinno być równe czasowi trwaniaLength. |
inheritThisRole | Wartość "true" lub "false" wskazuje, czy rola jest proponowana jednostkom bazowym. |
taskadd
Tworzy nowe zadanie, zwraca identyfikator nowego zadania.
Argumenty | Typ |
---|---|
Applicationid | |
description (opis) | Tekst z maksymalnie 254 znakami. |
Nazwa_zadania | Tekst z maksymalnie 254 znakami. |
tokenGroupID | |
svroleID (opcjonalnie) | Jeśli ten argument nie jest obecny, zostanie użyta rola nadzorcy bieżącego użytkownika. |
contextAdaptable (opcjonalnie) | ["0","1","N","Y"] |
underconstruction (opcjonalnie) | ["0","1","N","Y"] |
auditaction (opcjonalnie) |
|
auditalertmail (opcjonalnie) | Adres e-mail, do których zostały wysłane alerty dotyczące tego uprawnienia, są wysyłane przez audytora. Jeśli ten argument nie jest obecny, używany jest adres e-mail alertu audytora. |
MaxRoles (opcjonalnie) | Liczba całkowita |
MaxUsers (opcjonalnie) | Liczba całkowita |
Typ zwracany | Identyfikator nowego zadania. |
taskadditask
Wskazuje, że dwa zadania są niezgodne.
Argumenty | Typ |
---|---|
identyfikator zadania | |
taskID2 |
taskaddrole
Przypisuje zadanie do roli.
Argumenty | Typ |
---|---|
identyfikator roli | |
identyfikator zadania |
taskaddsupervisor
Nadaj użytkownikowi nadzorcę zadania.
Argumenty | Typ |
---|---|
svroleID | Można również użyć argumentu userID. W takim przypadku jest wybrana domyślna rola nadzorcy. Domyślna rola nadzorcy ma nazwę taką jak __svrole , po której następuje liczba. Argument userID może służyć do zapewnienia zgodności z poprzednimi wersjami. |
identyfikator zadania |
useradd
Tworzy nowego użytkownika, zwraca identyfikator nowego użytkownika.
Argumenty | Typ |
---|---|
description (opis) | |
alias | |
Languageid |
|
OrgUnitID | |
enddate (opcjonalnie) | Format daty to "RRRR-MM-DDThh:nn:ss", gdzie wymagany jest tylko rok, miesiąc i dzień. na przykład "2004-12-11" i "2004-11-28T08:00" są prawidłowymi wartościami. |
wyłączone (opcjonalnie) |
|
MaxPermissions (opcjonalnie) | Liczba całkowita |
MaxRoles (opcjonalnie) | Liczba całkowita |
Typ zwracany | Identyfikator nowego użytkownika. |
UserAddRole
Dodaje rolę użytkownika.
Argumenty | Typ |
---|---|
UserDeleteRole
Usuwa rolę użytkownika.
Argumenty | Typ |
---|---|
Userupdate
Aktualizacje użytkownika.
Argumenty | Typ |
---|---|
UserID | |
description (opcjonalnie) | |
language |
|
userDisabled (opcjonalnie) |
|
UserEndDate (opcjonalnie) | Format daty to "RRRR-MM-DDThh:nn:ss", gdzie wymagany jest tylko rok, miesiąc i dzień. na przykład "2004-12-11" i "2004-11-28T08:00" są prawidłowymi wartościami. |
firstName (opcjonalnie) | |
middleName (opcjonalnie) | |
lastName (opcjonalnie) | |
maxPermissions (opcjonalnie) | Liczba całkowita |
maxRoles (opcjonalnie) | Liczba całkowita |
GetInfo Functions
Zestaw funkcji opisanych w tej sekcji może służyć do pobierania informacji przechowywanych w systemie BHOLD. Każda funkcja może być wywoływana przy użyciu funkcji GetInfo z obiektu BScript. Niektóre obiekty wymagają parametrów. Zwrócone dane podlegają uprawnieniam do wyświetlania i nadzorowanym obiektom zalogowanego użytkownika.
Argumenty GetInfo
Nazwa | Opis |
---|---|
aplikacje | Zwraca listę aplikacji. |
atrybuty | Zwraca listę typów atrybutów. |
typy organizacji | Zwraca listę typów jednostek organizacyjnych. |
OrgUnits | Zwraca listę jednostek organizacyjnych bez atrybutów jednostek organizacyjnych. |
OrgUnitproposedroles | Zwraca listę proponowanych ról połączonych z jednostką organizacyjną. |
OrgUnitroles | Zwraca listę bezpośrednio połączonych ról danej jednostki organizacyjnej |
Objecttypeattributetypes | |
uprawnienia | |
uprawnieniaużytkownicy | |
role | Zwraca listę ról. |
roletasks | Zwraca listę zadań danej roli. |
zadania | Zwraca wszystkie zadania znane przez BHOLD. |
users | Zwraca listę użytkowników. |
użytkownicy | Zwraca listę połączonych ról nadzorcy danego użytkownika. |
userpermissions | Zwraca listę uprawnień danego użytkownika. |
Informacje o organizacji
Nazwa | Parametry | Typ zwracany |
---|---|---|
OrgUnit | OrgUnitID | OrgUnit |
OrgUnitasiattributes | OrgUnitID | Kolekcja |
OrgUnits | filter (opcjonalnie), proptypeid (opcjonalnie) Wyszukuje jednostki zawierające ciąg opisany w filtrze w proptypie opisanym w proptypeid. Jeśli ten identyfikator zostanie pominięty, filtr ma zastosowanie do opisu jednostki. Jeśli nie podano filtru, zwracane są wszystkie widoczne jednostki. |
Kolekcja |
OrgUnitOrgUnits | OrgUnitID | Kolekcja |
OrgUnitparents | OrgUnitID | Kolekcja |
OrgUnitpropertyvalues | OrgUnitID | Kolekcja |
OrgUnitproptypes | Kolekcja | |
OrgUnitusers | OrgUnitID | Kolekcja |
OrgUnitproposedroles | OrgUnitID | Kolekcja |
OrgUnitroles | OrgUnitID | Kolekcja |
OrgUnitinheritedroles | OrgUnitID | Kolekcja |
OrgUnitsupervisors | OrgUnitID | Kolekcja |
OrgUnitinheritedsupervisors | OrgUnitID | Kolekcja |
OrgUnitsupervisorroles | OrgUnitID | Kolekcja |
Informacje o roli
Nazwa | Parametry | Typ zwracany |
---|---|---|
role (rola) | identyfikator roli | Obiekt |
role | filter (opcjonalnie) | Kolekcja |
roleasiattributes | identyfikator roli | Kolekcja |
roleOrgUnits | identyfikator roli | Kolekcja |
roleparentrole | identyfikator roli | Kolekcja |
roleubroles | identyfikator roli | Kolekcja |
roleupervisor | identyfikator roli | Kolekcja |
rolesupervisorroles | identyfikator roli | Kolekcja |
roletasks | identyfikator roli | Kolekcja |
roleusers | identyfikator roli | Kolekcja |
rolesupervisorroles | identyfikator roli | Kolekcja |
proponowaneroleOrgUnits | identyfikator roli | Kolekcja |
proponowaneroleusers | identyfikator roli | Kolekcja |
Uprawnienie — informacje o zadaniu
Nazwa | Parametry | Typ zwracany |
---|---|---|
Uprawnienia | TaskID | Uprawnienie |
uprawnienia | filter (opcjonalnie) | Kolekcja |
permissionasiattributes | TaskID | Kolekcja |
permissionattachments | TaskID | Kolekcja |
permissionattributetypes | - | Kolekcja |
permissionparams | TaskID | Kolekcja |
permissionroles | TaskID | Kolekcja |
permissionsupervisors | TaskID | Kolekcja |
permissionsupervisorroles | TaskID | Kolekcja |
permissionusers | TaskID | Kolekcja |
task | TaskID | Zadanie |
zadania | filter (opcjonalnie) | Kolekcja |
dołączenia zadań | TaskID | Kolekcja |
parametry zadań | TaskID | Kolekcja |
taskrole | TaskID | Kolekcja |
tasksupervisors | TaskID | Kolekcja |
tasksupervisorroles | TaskID | Kolekcja |
taskusers | TaskID | Kolekcja |
Informacje o użytkowniku
Nazwa | Parametry | Typ zwracany |
---|---|---|
użytkownik | UserID | Użytkownik |
users | filter (opcjonalnie), attributetypeid (opcjonalnie) Wyszukuje użytkowników, którzy znajdują się w typie atrybutu określonym przez attributetypeid ciąg określony przez filtr. Jeśli ten identyfikator zostanie pominięty, filtr ma zastosowanie do domyślnego aliasu użytkownika. Jeśli żaden filtr nie zostanie dostarczony, zostaną zwróconi wszyscy widoczni użytkownicy. Na przykład:
|
Usercollection |
usersapplications | UserID | Kolekcja |
Userpermissions | UserID | Kolekcja |
userroles | UserID | Kolekcja |
użytkownicyrole | UserID | Kolekcja |
użytkownicyzadania | UserID | Kolekcja |
usersunits | UserID | Kolekcja |
usertasks | UserID | Kolekcja |
userunits | UserID | Kolekcja |
Typy zwracane
W tej sekcji opisano zwracane typy funkcji GetInfo.
Nazwa | Typ zwracany |
---|---|
Kolekcja | =<ITEMS>{<ITEM description="..." id="..." />}</ITEMS> |
Obiekt | =<ITEM type="…" description="..." /> |
OrgUnit | = <ITEM id="…" description="..." orgtype="..." parent="..."> <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM> |
Uprawnienie | = <ITEM id="…" description="…" name="…" tokengroup="…" application="…" > <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM> |
Role | = <ITEMS> {<ITEM id="…" description="…" />} </ITEMS> |
Rola | = <ITEM id="…" description="… " > <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM> |
Zadanie | Zobacz uprawnienie |
Użytkownicy | = <ITEMS> {<ITEM description="…" id="…" alias="…" />} </ITEMS> |
Użytkownik | = <ITEM id="…" description="…" alias="…" firstname="…" lastname="…" uuid="…" language="…"> <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM> |
Przykładowy skrypt
Firma ma serwer BHOLD i chce zautomatyzowanego skryptu, który tworzy nowych klientów. Informacje o firmie i jej menedżerze zakupów są wprowadzane na dostosowanej stronie internetowej. Każdy klient jest przedstawiany w modelu jako jednostka w ramach klientów jednostkowych. Menedżer zakupów jest również członkiem nadzorcy tej lekcji. Zostanie utworzona rola, która daje właścicielom prawo do zakupu w imieniu nowego klienta.
Jednak ten klient nie istnieje w aplikacji. Istnieje specjalna funkcja zaimplementowana w funkcji ASIDispatch, która tworzy nowe konto klienta w aplikacji zakupu. Każdy klient ma typ klienta.
Możliwe typy mogą być również prezentowane przez funkcję FunctionDispatch. AA wybiera prawidłowy typ dla nowego klienta.
Utwórz rolę i zadanie, aby przedstawić uprawnienia zakupu. Rzeczywiste uprawnienie do zakupu jest prezentowane przez usługę ASI jako plik /customers/customer id/purchase
. Ten plik powinien być połączony z nowym zadaniem.
Strona Aktywnego serwera, która zbiera informacje, wygląda następująco:
<%@ Language=VBScript %>
<% Option Explicit %>
<html>
<body>
<form action="MySubmit.asp" method=post>
<input type="hidden" name="OrgUnitID"
value="<% = Request("ID") %>">
Company <input type="text" name="Description"> <br>
Type <select name="OrgType">
<%Dim oOrgType
For Each oOrgType on bscript.getinfo("Orgtypes") %>
<option value="<% = oOrgType.OrgTypeID %>">
<% = oOrgType.Description %>
</option> <%
Next %>
</select> <br>
Manager <input type="text" name=" manager"> <br>
Alias <input type=" text" name=" alias"> <br>
e-mail <input type=" text" name=" email"> <br>
<input type="submit">
</form>
</body>
</html>
Wszystkie dostosowane strony muszą być wymagane, to zażądanie odpowiednich informacji i utworzenie dokumentu XML z żądanymi informacjami. W tym przykładzie strona MySubmit przekształca dane w dokumencie XML, przypisz je do skryptu b1script. Parametry obiektu i na koniec wywołuje b1script.ExecuteScript("MyScript")
funkcję.
Poniższy skrypt wejściowy pokazuje następujący przykład:
<customer>
<description>ACME inc.</description>
<orgtype>5<orgtype>
<name>John Doe</name>
<alias>jdoe</alias>
<email>jdoe@acme.com</email>
</customer>
Ten skrypt wejściowy nie zawiera żadnych poleceń dla pakietu BHOLD. Wynika to z tego, że ten skrypt nie jest wykonywany bezpośrednio przez usługę BHOLD; zamiast tego jest to dane wejściowe dla wstępnie zdefiniowanej funkcji. Ta wstępnie zdefiniowana funkcja tłumaczy ten obiekt na dokument XML za pomocą poleceń BHOLD. Ten mechanizm uniemożliwia użytkownikowi wysyłanie skryptów do systemu BHOLD, które zawierają funkcje, których użytkownik nie może wykonywać, takich jak setUser i wysyłanie funkcji do usługi ASI.
<?xml version="1.0" encoding="utf-8" ?>
- <functions xmlns="http://tempuri.org/BscriptFunctions.xsd">
<function name="roleadduser" roleid="" userid="" />
<function name="roledeleteuser" roleid="" userid="" />
</functions>