Udostępnij za pośrednictwem


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.

Przetwarzanie skryptów pakietu 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 b1scriptserviceinternetowej . 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
&amp; &
&lt; <
&gt; >
&quot; "
&apos; '

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:
  • 0: Wyrażenie regularne (dodaj argument "value").
  • 1: Wartość (dodaj argumenty "operator" i "value").
  • 2: Lista wartości.
  • 3: Zakres (dodaj argumenty "rangemin" i "rangemax").
  • 4: Wiek (dodaj argumenty "operator" i "value").
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
  • 0: Zestaw typów atrybutów jest widoczny.
  • 2: Zestaw typów atrybutów jest widoczny po wybraniu przycisku więcej informacji .
  • 1: Zestaw typów atrybutów jest niewidoczny.
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)
  • 0: Nieznany (wartość domyślna)
  • 1: RaportOnly
  • 2: AlertAppAll
  • 3: AlertAppObsolete
  • 4. AlertAppMissing
  • 5: EnforceAppAll
  • 6: EnforceAppObsolete
  • 7. Wymuszanie usługiAppMissing
  • 8: AlertEnforceAppAll
  • 9: AlertEnforceAppObsolete
  • 10: AlertEnforceAppMissing
  • 11: ImportAll
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
  • 1: Angielski
  • 2: Holenderski
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)
  • 0: Włączone
  • 1: Wyłączone
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
  • 1: Angielski
  • 2: Holenderski
userDisabled (opcjonalnie)
  • 0: Włączone
  • 1: Wyłączone
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:
  • GetInfo("users") metoda zwraca wszystkich użytkowników.
  • GetInfo("users", "%dmin%") Zwraca wszystkich użytkowników z ciągiem "dmin" w aliasie domyślnym.
  • Załóżmy, że użytkownicy mają dodatkowy atrybut o nazwie "City".GetInfo("users", "%msterda%", "City"). To wywołanie zwraca wszystkich użytkowników, którzy mają ciąg "msterda" w atrybucie City.
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>

Następne kroki