Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 interfejsem b1scriptservice.asmx usługi internetowej.
Przed wykonaniem skryptu należy zebrać wszystkie informacje wewnątrz skryptu, aby utworzyć ten skrypt. Te informacje można zebrać z następujących źródeł:
- Dane wejściowe użytkownika
- Dane pakietu BHOLD
- Aplikacje
- Pozostałe
Dane 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 przypisane 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 tak samo jak 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 skryptu.
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 błędu i numer mogą służyć do uzyskania dodatkowych informacji na temat błędu.
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 usługi ASI. Jeśli funkcja powiedzie się, wynik jest dostępny w formacie XML w obiekcie wynikowym.
Poniższy fragment kodu jest prostym przykładem języka 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 internetowej b1scriptservice. Jest to wykonywane przez dodanie odwołania do sieci Web do projektu przy użyciu serwera http://<>: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 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 zawierający 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 powinien być dokument XSL o takiej samej nazwie jak funkcja, ale z rozszerzeniem xsl.
Jeśli funkcja nie powiedzie się, funkcja ExecuteScript zwraca wartość False. Opis błędu i numer 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 skrypt 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 sformatowany ciąg 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. Funkcja ExecuteXML i błąd jest dodawana na końcu dokumentu dodawane są 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 identyfikatora uzyskują 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 zostaną usunięte 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 |
| roleID | Opis |
| identyfikator zadania | Opis |
| identyfikator użytkownika | 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. Istnieje możliwość udzielenia uprawnień do wykonania 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ą również służyć do tworzenia stron samodzielnego rejestrowania.
Skrypt polecenia
Skrypt polecenia zawiera listę funkcji wykonywanych przez system BHOLD. Lista jest zapisywana w dokumencie XML zgodnym 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" |
| nazwa parametru | Prawidłowa nazwa parametru. |
| parameterValue | @variable@ | wartość |
| wartość | Prawidłowa wartość parametru. |
| parametrList | <parametrów> {parameterItem} </parameters> |
| parametrItem | <nazwa parametru="nazwa_parametru"> parametrValue </parameter> |
| return | return="@variable@" |
| zmienna | Nazwa zmiennej niestandardowej. |
Kod XML zawiera następujące tłumaczenia znaków specjalnych:
| XML | Postać |
|---|---|
& |
& |
< |
< |
> |
> |
" |
" |
' |
' |
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 (w programowaniu) | Typ |
|---|---|
| Opis | Tekst |
| Typ reguły | 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 RuleType ma wartość 1 lub 4. Możliwe wartości to '=', '<' lub '>'. Tagi XML muszą używać ">" dla>" i "<" dla<". |
| RangeMin | Numer Uwaga: ten argument jest obowiązkowy, jeśli RuleType ma wartość 3. |
| RangeMax | Numer Uwaga: ten argument jest obowiązkowy, jeśli RuleType ma wartość 3. |
| Wartość | Tekst Uwaga: ten argument jest obowiązkowy, jeśli RuleType to 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 (w programowaniu) | Typ |
|---|---|
| opis | |
| maszyna | |
| 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 formatowana jako [<<objecttype>>.<<nameofobjecttypeattribute>>(startindexoffset,length offset)]. Przesunięcie jest opcjonalne. Można użyć tylko atrybutów użytkownika 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)]. |
| Zwracany typ | Identyfikator nowej aplikacji. |
AttributeSetValue
Ustawia wartość typu atrybutu połączonego z typem obiektu. Wymaga, aby opisy typu obiektu i typu atrybutu są unikatowe.
| Argumenty (w programowaniu) | Typ |
|---|---|
| ObjectTypeID | Tekst |
| Identyfikator obiektu | Tekst |
| AttributeTypeID | Tekst |
| Wartość | Tekst |
| Zwracany typ | Typ |
AttributeTypeAdd
Wstawia nowy typ atrybutu/typ właściwości.
| Argumenty (w programowaniu) | Typ |
|---|---|
| DataTypeID | Tekst |
| Opis (=Tożsamość) | Tekst Uwaga: nie można używać wyrazó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 |
| Zwracany typ | Typ |
| AttributeTypeID | Tekst |
AttributeTypeSetAdd
Wstawia nowy zestaw typów atrybutów. Wymaga, aby opis zestawu typów atrybutów był unikatowy.
| Argumenty (w programowaniu) | Typ |
|---|---|
| Opis (=Tożsamość) | Tekst |
| Zwracany typ | 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 (w programowaniu) | Typ |
|---|---|
| AttributeTypeSetID | Tekst |
| AttributeTypeID | Tekst |
| Zamówienie | Liczba |
| Identyfikator lokalizacji | Tekst Uwaga: lokalizacja to "group" lub "single". |
| Obowiązkowy | ["0"|"1"|"N"|"Y"] |
| Zwracany typ | 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 (w programowaniu) | Typ |
|---|---|
| ObjectTypeID | Tekst |
| AttributeTypeSetID | Tekst |
| Zamówienie | Liczba |
| Widoczny |
|
| Zwracany typ | Typ |
OrgUnitadd
Tworzy nową jednostkę organizacyjną, zwraca identyfikator nowej jednostki organizacyjnej.
| Argumenty (w programowaniu) | Typ |
|---|---|
| opis | |
| orgtypeID | |
| parentID | |
| OrgUnitinheritedroles (opcjonalnie) | |
| Zwracany typ | Typ |
| Identyfikator nowej lekcji | Parametr OrgUnitinheritedroles ma wartość tak lub nie. |
OrgUnitaddsupervisor
Nadaj użytkownikowi nadzorcę jednostki organizacyjnej.
| Argumenty (w programowaniu) | 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. |
| OrgUnitID |
OrgUnitadduser
Ustaw użytkownika na członka jednostki organizacyjnej.
| Argumenty (w programowaniu) | Typ |
|---|---|
| identyfikator użytkownika | |
| OrgUnitID |
OrgUnitdelete
Usuwa jednostkę organizacyjną.
| Argumenty (w programowaniu) | Typ |
|---|---|
| OrgUnitID |
OrgUnitdeleteuser
Usuwa użytkownika jako członka jednostki organizacyjnej.
| Argumenty (w programowaniu) | Typ |
|---|---|
| identyfikator użytkownika | |
| OrgUnitID |
roleadd
Tworzy nową rolę.
| Argumenty (w programowaniu) | 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) | Integer |
| MaxRoles (opcjonalnie) | Integer |
| MaxUsers (opcjonalnie) | Integer |
| Zwracany typ | Typ |
| Identyfikator nowej roli |
roleaddOrgUnit
Przypisuje rolę do jednostki organizacyjnej.
| Argumenty (w programowaniu) | Typ |
|---|---|
| OrgUnitID | roleID |
| inheritThisRole | Wartość "true" lub "false" wskazuje, czy rola jest proponowana jednostkom bazowym. |
roleaddrole
Przypisuje rolę jako podrolę innej roli.
| Argumenty (w programowaniu) | Typ |
|---|---|
| roleID | |
| subRoleID |
roleaddsupervisor
Nadaj użytkownikowi nadzorcę roli.
| Argumenty (w programowaniu) | 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. |
| roleID |
roleadduser
Przypisuje rolę użytkownikowi. Rola nie może być rolą dostosowywalną do kontekstu, gdy nie podano identyfikatora kontekstu.
| Argumenty (w programowaniu) | Typ |
|---|---|
| identyfikator użytkownika | |
| roleID | |
| 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, przez które rola jest przypisana użytkownikowi. |
| start (opcjonalnie) | Data i godzina przypisania roli. Po pominięciu tego atrybutu 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. Gdy podano parametr 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 są ignorowane. |
| contextId (opcjonalnie) | Identyfikator jednostki organizacyjnej, wymagany tylko dla ról z możliwością dostosowania kontekstu. |
roledelete
Usuwa rolę.
| Argumenty (w programowaniu) | Typ |
|---|---|
| roleID |
roledeleteuser
Usuwa przypisanie roli do użytkownika. Odziedziczone role przez użytkownika są odwoływane przez to polecenie.
| Argumenty (w programowaniu) | Typ |
|---|---|
| identyfikator użytkownika | |
| roleID | |
| contextID (opcjonalnie) |
roleproposeOrgUnit
Proponuje rolę, która ma zostać przypisana do członków i jednostki organizacyjnej organizacji.
| Argumenty (w programowaniu) | Typ |
|---|---|
| OrgUnitID | |
| roleID | |
| 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, przez jaką rola jest przypisana użytkownikowi. |
| durationFixed | Wartość "true" lub "false" wskazuje, czy przypisanie tej roli do użytkownika powinno być równe czasowi trwaniaLength. |
| inheritThisRole | Wartość "true" lub "false" wskazuje, czy rola jest proponowana jednostkom bazowym. |
zadaniedodaj
Tworzy nowe zadanie, zwraca identyfikator nowego zadania.
| Argumenty (w programowaniu) | Typ |
|---|---|
| identyfikator aplikacji | |
| 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, na który wysłano 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) | Integer |
| MaxUsers (opcjonalnie) | Integer |
| Zwracany typ | Identyfikator nowego zadania. |
taskadditask
Wskazuje, że dwa zadania są niezgodne.
| Argumenty (w programowaniu) | Typ |
|---|---|
| identyfikator zadania | |
| identyfikator zadania2 |
taskaddrole
Przypisuje zadanie do roli.
| Argumenty (w programowaniu) | Typ |
|---|---|
| roleID | |
| identyfikator zadania |
taskaddsupervisor
Nadaj użytkownikowi nadzorcę zadania.
| Argumenty (w programowaniu) | 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 (w programowaniu) | Typ |
|---|---|
| opis | |
| pseudonim | |
| 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) | Integer |
| MaxRoles (opcjonalnie) | Integer |
| Zwracany typ | Identyfikator nowego użytkownika. |
UserAddRole
Dodaje rolę użytkownika.
| Argumenty (w programowaniu) | Typ |
|---|---|
UserDeleteRole
Usuwa rolę użytkownika.
| Argumenty (w programowaniu) | Typ |
|---|---|
Userupdate
Aktualizuje użytkownika.
| Argumenty (w programowaniu) | Typ |
|---|---|
| UserID | |
| description (opcjonalnie) | |
| Język |
|
| 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) | Integer |
| maxRoles (opcjonalnie) | Integer |
Funkcje GetInfo
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 |
|---|---|
| Aplikacji | Zwraca listę aplikacji. |
| atrybuty | Zwraca listę typów atrybutów. |
| typy organizacji | Zwraca listę typów jednostek organizacyjnych. |
| Jednostki organizacyjne | 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 | |
| permissionusers | |
| Ról | Zwraca listę ról. |
| roletasks | Zwraca listę zadań danej roli. |
| Zadania | Zwraca wszystkie zadania znane przez usługę BHOLD. |
| użytkownicy | Zwraca listę użytkowników. |
| użytkownicyrole | Zwraca listę połączonych ról nadzorcy danego użytkownika. |
| userpermissions | Zwraca listę uprawnień danego użytkownika. |
Informacje o organizacji
| Nazwa | Parametry | Zwracany typ |
|---|---|---|
| OrgUnit | OrgUnitID | OrgUnit |
| OrgUnitasiattributes | OrgUnitID | Kolekcja |
| Jednostki organizacyjne | filter (opcjonalnie), proptypeid (opcjonalnie) Wyszukuje jednostki zawierające ciąg opisany w filtru 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 | Zwracany typ |
|---|---|---|
| rola | roleID | Przedmiot |
| Ról | filter (opcjonalnie) | Kolekcja |
| roleasiattributes | roleID | Kolekcja |
| roleOrgUnits | roleID | Kolekcja |
| roleparentrole | roleID | Kolekcja |
| roleubroles | roleID | Kolekcja |
| roleupervisors | roleID | Kolekcja |
| rolesupervisorroles | roleID | Kolekcja |
| roletasks | roleID | Kolekcja |
| roleusers | roleID | Kolekcja |
| rolesupervisorroles | roleID | Kolekcja |
| proposedroleOrgUnits | roleID | Kolekcja |
| proposedroleusers | roleID | Kolekcja |
Uprawnienie — informacje o zadaniu
| Nazwa | Parametry | Zwracany typ |
|---|---|---|
| pozwolenie | TaskID | Pozwolenie |
| Uprawnienia | filter (opcjonalnie) | Kolekcja |
| permissionasiattributes | TaskID | Kolekcja |
| dołączenia uprawnień | 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 |
| role zadań | TaskID | Kolekcja |
| tasksupervisors | TaskID | Kolekcja |
| tasksupervisorroles | TaskID | Kolekcja |
| taskusers | TaskID | Kolekcja |
Informacje o użytkowniku
| Nazwa | Parametry | Zwracany typ |
|---|---|---|
| użytkownik | UserID | Użytkownik |
| użytkownicy | filter (opcjonalnie), attributetypeid (opcjonalnie) Wyszukuje użytkowników, którzy znajdują się w typie atrybutu określonym przez atrybuttypeid ciąg określony przez filtr. Jeśli ten identyfikator zostanie pominięty, filtr ma zastosowanie do domyślnego aliasu użytkownika. Jeśli nie zostanie podany żaden filtr, zostaną zwróconi wszyscy widoczni użytkownicy. Na przykład:
|
UserCollection |
| usersapplications | UserID | Kolekcja |
| Userpermissions | UserID | Kolekcja |
| userrole | UserID | Kolekcja |
| użytkownicyrole | UserID | Kolekcja |
| użytkownicy — zadania | UserID | Kolekcja |
| usersunits | UserID | Kolekcja |
| usertasks | UserID | Kolekcja |
| userunits | UserID | Kolekcja |
Typy zwracane
W tej sekcji opisano zwracane typy funkcji GetInfo.
| Nazwa | Zwracany typ |
|---|---|
| Kolekcja | =<ITEMS>{<ITEM description="..." id="..." />}</ITEMS> |
| Przedmiot | =<ITEM type="…" description="..." /> |
| OrgUnit | = <ITEM id="…" description="..." orgtype="..." parent="..."> <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM> |
| Pozwolenie | = <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. Tworzona jest 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 uprawnienia zakupu są 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żądać odpowiednich informacji i utworzyć dokument XML z żądanymi informacjami. W tym przykładzie strona MySubmit przekształca dane w dokumencie XML, przypisz ją do b1script. Parametry obiektu, a na koniec wywołuje funkcję b1script.ExecuteScript("MyScript").
Poniższy skrypt wejściowy przedstawia 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 usługi BHOLD. Jest to spowodowane tym, ż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 zawierającego funkcje, których użytkownik nie może wykonać, 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>