Condividi tramite


Informazioni di riferimento per gli sviluppatori BHOLD per Microsoft Identity Manager 2016

Il modulo BHOLD-core può elaborare i comandi di script. Può essere eseguita direttamente usando il bscript.dll in un progetto .NET. Interagire anche con l'interfaccia b1scriptservice.asmx del servizio Web.

Prima dell'esecuzione di uno script, tutte le informazioni all'interno dello script devono essere raccolte per comporre questo script. Queste informazioni possono essere raccolte dalle origini seguenti:

  • Input utente
  • Dati BHOLD
  • Applicazioni
  • Altro

I dati BHOLD possono essere recuperati usando la funzione GetInfo dell'oggetto script. È disponibile un elenco completo dei comandi che possono presentare tutti i dati archiviati nel database BHOLD. Tuttavia, i dati presentati sono soggetti alle autorizzazioni di visualizzazione dell'utente connesso. Il risultato è sotto forma di un documento XML che può essere analizzato.

Un'altra origine per informazioni può essere una delle applicazioni controllate da BHOLD. Lo snap-in dell'applicazione ha una funzione speciale, functionDispatch, che può essere usata per presentare informazioni specifiche dell'applicazione. Questo documento viene presentato anche come documento XML.

Infine, se non esiste alcun altro modo, lo script può contenere comandi direttamente ad altre applicazioni o sistemi. NoThenstallation di software aggiuntivo nel server BHOLD può compromettere la sicurezza dell'intero sistema.

Tutte queste informazioni vengono inserite in un documento XML e assegnate all'oggetto script BHOLD. L'oggetto combina questo documento con una funzione predefinita. La funzione predefinita è un documento XSL che converte il documento di input dello script in un documento di comando BHOLD.

Elaborazione script BHOLD

I comandi vengono eseguiti lo stesso ordine del documento. Se una funzione ha esito negativo, tutti i comandi eseguiti vengono rollback.

Oggetto Script

Questa sezione descrive come usare l'oggetto script.

Recuperare le informazioni BHOLD

La funzione GetInfo viene usata per recuperare informazioni dai dati disponibili nel sistema di autorizzazione BHOLD. La funzione richiede un nome di funzione e alla fine uno o più parametri. Se questa funzione ha esito positivo, viene restituito un oggetto BHOLD o una raccolta sotto forma di documento XML.

Se la funzione non riesce, la funzione GetInfo restituisce una stringa vuota o un errore. La descrizione e il numero di errore possono essere usati per ottenere altre informazioni sull'errore.

La funzione GetInfo 'FunctionDispatch' può essere usata per recuperare informazioni da un'applicazione controllata dal sistema BHOLD. Questa funzione richiede tre parametri: ID dell'applicazione, la funzione di invio definita nell'ambiente del servizio app e un documento XML con informazioni di supporto per l'ambiente del servizio app. Se la funzione ha esito positivo, il risultato è disponibile in formato XML nell'oggetto risultato.

Il frammento di codice seguente è un semplice esempio C# di GetInfo:

ScriptProcessor myScriptProcessor = new ScriptProcessor();
myScriptProcessor.Initializae("CORP\\b1user");
myScriptProcessor.GetInfo("OrgUnit", "1");

Analogamente, l'oggetto BScript può anche essere accessibile tramite il servizio b1scriptserviceWeb . Questa operazione viene eseguita aggiungendo un riferimento Web al progetto usando http://< server>:5151/BHOLD/Core/b1scriptservice.asmx in cui <il server è il server> con i file binari BHOLD installati. Per altre informazioni, vedere Aggiunta di un riferimento a un servizio Web a un progetto di Visual Studio.

Nell'esempio seguente viene illustrato come usare la funzione GetInfo da un servizio Web. Questo codice recupera l'unità organizzativa con un orgID di 1 e quindi visualizza il nome di tale unità organizzativa sullo schermo.

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);

        }
    }
}

Nell'esempio VBScript seguente viene usato il servizio Web tramite SOAP e usando GetInfo. Per altri esempi per SOAP 1.1, SOAP 1.2 e HTTP POST, vedere la sezione Riferimento gestito BHOLD oppure passare al servizio Web direttamente da un browser e visualizzarli lì.

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

Eseguire script

La funzione ExecuteScript dell'oggetto BScript può essere usata per eseguire script. Questa funzione richiede due parametri. Il primo parametro è il documento XML che contiene le informazioni personalizzate da usare dallo script. Il secondo parametro è il nome dello script predefinito da usare. InIn la directory degli script predefiniti BHOLD, in questo caso dovrebbe essere un documento XSL con lo stesso nome della funzione, ma con l'estensione xsl.

Se la funzione non riesce, la funzione ExecuteScript restituisce il valore False. La descrizione dell'errore e il numero possono essere usati per sapere cosa è andato male. Di seguito è riportato un esempio di uso del metodo Web ExecuteXML. Questo metodo richiama 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

Questa funzione GetInfo è disponibile dopo l'esecuzione della funzione executescript . La funzione restituisce una stringa formattata XML contenente il report di esecuzione completo. Il nodo Script contiene la struttura XML dello script eseguito.

Per ogni funzione che ha esito negativo durante l'esecuzione dello script viene aggiunta una funzione node con il nome dei nodi. ExecuteXML e Error vengono aggiunti alla fine del documento tutti gli ID generati.

Si noti che vengono aggiunte solo le funzioni che contengono un errore. Un numero di errore '0' indica che la funzione non viene eseguita.

<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>

Parametri ID

I parametri ID ottengono un trattamento speciale. I valori non numerici vengono usati come valore di ricerca per individuare le entità corrispondenti nell'archivio dati BHOLD. Quando il valore di ricerca non è univoco, viene restituita la prima entità conforme al valore di ricerca.

Per distinguere i valori di ricerca numerica dagli ID, è possibile usare un prefisso. Quando i primi sei caratteri del valore di ricerca sono uguali a 'no_id:', questi caratteri vengono rimossi prima che il valore venga usato per la ricerca. I caratteri jolly SQL '%' possono essere usati.

I campi seguenti vengono usati con il valore di ricerca:

Tipo ID Campo di ricerca
OrgUnitID Descrizione
Roleid Descrizione
Taskid Descrizione
userID DefaultAlias

Accesso e autorizzazioni di script

Il codice lato server nelle pagine di Active Server viene usato per eseguire gli script. Pertanto, l'accesso allo script significa accedere a queste pagine. Il sistema BHOLD gestisce informazioni sui punti di ingresso delle pagine personalizzate. Queste informazioni includono la pagina iniziale e la descrizione della funzione (è necessario supportare più lingue).

Un utente è autorizzato a poter immettere le pagine personalizzate ed eseguire uno script. Ogni punto di ingresso viene presentato come attività. Ogni utente che ha ottenuto questa attività tramite un ruolo o un'unità è in grado di eseguire la funzione corrispondente.

Una nuova funzione nel menu presenta tutte le funzioni personalizzate che possono essere eseguite dall'utente. Poiché uno script può eseguire azioni nel sistema BHOLD in un'identità diversa dall'utente connesso. È possibile concedere l'autorizzazione per eseguire un'azione specifica senza avere supervisione su qualsiasi oggetto. Ad esempio, questo potrebbe essere utile per un dipendente che è autorizzato solo ad immettere nuovi clienti all'azienda. Questi script possono essere usati anche per creare pagine di registrazione automatica.

Script di comando

Lo script di comando contiene un elenco di funzioni eseguite dal sistema BHOLD. L'elenco viene scritto in un documento XML conforme alle definizioni seguenti:

Script di comando <functions>functions</functions>
functions funzione {function}
function <function name="functionName" functionParameters [return] (/> | > parameterList </function>)
functionName Nome di funzione valido, come descritto nelle sezioni seguenti.
functionParameters { functionParameter }
functionParameter parameterName = "parameterValue"
parameterName Nome di parametro valido.
Parametervalue @variable@ | Valore
Valore Valore di parametro valido.
parameterList <parameters> {parameterItem} </parameters>
parameterItem <parameter name="parameterName"> parameterValue </parameter>
return return="@variable@"
Variabile Nome di una variabile personalizzata.

XML include le traduzioni seguenti di caratteri speciali:

XML Carattere
&amp; &
&lt; <
&gt; >
&quot; "
&apos; '

Questi caratteri XML possono essere usati negli identificatori, ma non sono consigliati.

Il codice seguente illustra un esempio di documento di comando valido con tre funzioni:

<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>

La funzione OrgUnitAdd archivia l'ID dell'unità creata in una variabile denominata UnitID. Questa variabile viene usata come input per la funzione UserAdd. Il valore restituito di questa funzione non viene utilizzato. Le sezioni seguenti descrivono tutte le funzioni disponibili, i parametri obbligatori e i relativi valori restituiti.

Eseguire funzioni

Questa sezione descrive come usare le funzioni di esecuzione.

ABAAttributeRuleAdd

Creare una nuova regola di attributo in un tipo di attributo specifico. Le regole degli attributi possono essere collegate solo a un tipo di attributo.

La regola di attributo specificata può essere collegata a tutti i tipi di attributo possibili.

RuleType non può essere modificato con il comando "ABAattributeruletypeupdate". Richiede che la descrizione dell'attributo sia univoca.

Argomenti Tipo
Descrizione Testo
RuleType Specificare il tipo di regola dell'attributo. A seconda del tipo di regola dell'attributo, è necessario includere altri argomenti. I valori del tipo di regola seguenti sono validi:
  • 0: espressione regolare (aggiungere l'argomento "value").
  • 1: Valore (aggiungere argomenti "operator" e "value").
  • 2: Elenco di valori.
  • 3: Intervallo (aggiungere argomenti "rangemin" e "rangemax").
  • 4: Age (aggiungere argomenti "operator" e "value").
InvertResult ["0"|"1"|"N"|"Y"]
AttributeTypeID Testo
Argomenti facoltativi Tipo
Operatore Testo
Nota: questo argomento è obbligatorio se RuleType è 1 o 4. I valori possibili sono '=', '<'o '>'. I tag XML devono usare ">" per '>' e "<" per '<'.
RangeMin Numero
Nota: questo argomento è obbligatorio se RuleType è 3.
RangeMax Numero
Nota: questo argomento è obbligatorio se RuleType è 3.
Valore Testo
Nota: questo argomento è obbligatorio se RuleType è 0, 1 o 4. L'argomento deve essere un valore numerico o alfanumerico.
Tipo restituito AttributeRuleID Testo

applicationadd

Crea una nuova applicazione, restituisce l'ID della nuova applicazione.

Argomenti Tipo
description
computer
modulo
parameter
protocol
username
password
svroleID (facoltativo) Se questo argomento non è presente, viene utilizzato un ruolo di supervisore dell'utente corrente.
Applicationaliasformula (facoltativo) La formula alias viene usata per creare un alias per un utente quando viene assegnato a un'autorizzazione dell'applicazione. L'alias viene creato se l'utente non ha già un alias per questa applicazione. Se non viene assegnato alcun valore all'alias predefinito dell'utente viene usato come alias per l'applicazione. La formula viene formattata come [<<objecttype>>.<<nameofobjecttypeattribute>>(startindexoffset,length offset)]. L'offset è facoltativo. È possibile usare solo gli attributi User e Application. È possibile usare testo libero. I caratteri riservati sono parentesi quadre sinistra ([) e parentesi quadrata destra (]). Ad esempio: [Application.bholdDescription]\[User.bholdDefAlias(1,5)].
Tipo restituito ID della nuova applicazione.

AttributeSetValue

Imposta il valore di un tipo di attributo connesso al tipo di oggetto. Richiede che le descrizioni del tipo di oggetto e il tipo di attributo siano univoci.

Argomenti Tipo
ObjectTypeID Testo
ObjectID Testo
AttributeTypeID Testo
Valore Testo
Tipo restituito Tipo

AttributeTypeAggiungi

Inserisce un nuovo tipo di attributo/tipo di proprietà.

Argomenti Tipo
DataTypeID Testo
Descrizione (=Identità) Testo
Nota: non è possibile usare parole riservate, tra cui 'a', 'frm', 'id', 'usr' e 'bhold'.
MaxLength Numero in [1,..,255]
ListOfValues (boolean) ["0"|"1"|"N"|"Y"]
DefaultValue Testo
Tipo restituito Tipo
AttributeTypeID Testo

AttributeTypeSetAdd

Inserisce un nuovo set di tipi di attributo. Richiede che la descrizione di un set di tipi di attributo sia univoca.

Argomenti Tipo
Descrizione (=Identità) Testo
Tipo restituito Tipo
AttributeTypeSetID Testo

AttributeTypeSetAddAttributeType

Inserisce un nuovo tipo di attributo in un set di tipi di attributo esistente. Richiede che le descrizioni del set di tipi di attributo e del tipo di attributo siano univoche.

Argomenti Tipo
AttributeTypeSetID Testo
AttributeTypeID Testo
Ordine Numero
LocationID Testo
Nota: la posizione è "group" o "single".
Obbligatorio ["0"|"1"|"N"|"Y"]
Tipo restituito Tipo

ObjectTypeAddAttributeTypeSet

Aggiunge un tipo di attributo impostato su un tipo di oggetto. Richiede che la descrizione del tipo di oggetto e il set di tipi di attributo siano univoci. I tipi di oggetto sono: System, OrgUnit, User, Task.

Argomenti Tipo
ObjectTypeID Testo
AttributeTypeSetID Testo
Ordine Numero
Visible
  • 0: il set di tipi di attributo è visibile.
  • 2: il set di tipi di attributo è visibile quando viene selezionato il pulsante più informazioni .
  • 1: il set di tipi di attributo è invisibile.
Tipo restituito Tipo

OrgUnitadd

Crea una nuova unità organizzativa, restituisce l'ID della nuova unità organizzativa.

Argomenti Tipo
description
orgtypeID
parentID
OrgUnitinheritedroles (facoltativo)
Tipo restituito Tipo
ID della nuova unità Parametro OrgUnitinheritedroles
ha il valore sì o no.

OrgUnitaddsupervisor

Creare un utente un supervisore di un'unità organizzativa.

Argomenti Tipo
svroleID L'id utente dell'argomento può essere usato anche. In questo caso, viene selezionato il ruolo di supervisore predefinito. Un ruolo di supervisore predefinito ha un nome come __svrole seguito da un numero. L'id utente dell'argomento può essere usato per la compatibilità con le versioni precedenti.
OrgUnitID

OrgUnitadduser

Creare un utente membro di un'unità organizzativa.

Argomenti Tipo
userID
OrgUnitID

OrgUnitdelete

Rimuove un'unità organizzativa.

Argomenti Tipo
OrgUnitID

OrgUnitdeleteuser

Rimuove un utente come membro di un'unità organizzativa.

Argomenti Tipo
userID
OrgUnitID

roleadd

Crea un nuovo ruolo.

Argomenti Tipo
Descrizione
svrole
svroleID (facoltativo) Se questo argomento non è presente, viene usato un ruolo di supervisore dell'utente corrente.
ContextAdaptable (facoltativo) ["0","1","N","Y"]
MaxPermissions (facoltativo) Integer
MaxRoles (facoltativo) Integer
MaxUsers (facoltativo) Integer
Tipo restituito Tipo
ID del nuovo ruolo

roleaddOrgUnit

Assegna un ruolo a un'unità organizzativa.

Argomenti Tipo
OrgUnitID Roleid
ereditaThisRole 'true' o 'false', indica se il ruolo viene proposto alle unità sottostanti.

roleaddrole

Assegna un ruolo come subrole di un altro ruolo.

Argomenti Tipo
Roleid
subRoleID

roleaddsupervisor

Creare un utente un supervisore di un ruolo.

Argomenti Tipo
svroleID L'id utente dell'argomento può essere usato anche. In questo caso, viene selezionato il ruolo di supervisore predefinito. Un ruolo di supervisore predefinito ha un nome come __svrole seguito da un numero. L'id utente dell'argomento può essere usato per la compatibilità con le versioni precedenti.
Roleid

roleadduser

Assegna un ruolo a un utente. Il ruolo non può essere un ruolo adattabile al contesto quando non viene specificato alcun contestoID.

Argomenti Tipo
userID
Roleid
durationType (facoltativo) Può contenere i valori 'free', 'hours' e 'days'.
durationLength (facoltativo) Obbligatorio quando durationType è 'ore' o 'giorni'. deve contenere il valore intero per il numero di ore o giorni assegnati al ruolo a un utente.
start (facoltativo) Data e ora in cui viene assegnato il ruolo. Quando questo attributo viene omesso, il ruolo viene assegnato immediatamente. Il formato di data è 'AAAAA-MM-DDThh:nn:ss", dove sono necessari solo anno, mese e giorno. ad esempio "2004-12-11" e "2004-11-28T08:00" sono valori validi.
end (facoltativo) Data e ora in cui il ruolo viene revocato. Quando viene specificato durationType e durationLength, questo valore viene ignorato. Il formato di data è 'AAAAA-MM-DDThh:nn:ss", dove sono necessari solo anno, mese e giorno. ad esempio "2004-12-11" e "2004-11-28T08:00" sono valori validi.
linkreason Obbligatorio quando viene specificato l'inizio, la fine o la durata, altrimenti ignorata.
contextId (facoltativo) ID dell'unità organizzativa, obbligatorio solo per i ruoli adattabili al contesto.

roledelete

Elimina un ruolo.

Argomenti Tipo
Roleid

roledeleteuser

Rimuove l'assegnazione di ruolo a un utente. I ruoli ereditati dall'utente vengono revocati da questo comando.

Argomenti Tipo
userID
Roleid
contextID (facoltativo)

roleproposeOrgUnit

Propone un ruolo da assegnare ai membri e alle sotto-organizzazioni di un'organizzazioneunit.

Argomenti Tipo
OrgUnitID
Roleid
durationType (facoltativo) Può contenere valori 'free', 'hours' e 'days'.
durationLength Obbligatorio quando durationType è 'hours' o 'days', deve contenere il valore intero per il numero di ore o giorni assegnati al ruolo a un utente.
durationFixed 'true' o 'false', indica se l'assegnazione di questo ruolo a un utente deve essere uguale a durationLength.
inheritThisRole 'true' o 'false', indica se il ruolo viene proposto alle unità sottostanti.

taskadd

Crea una nuova attività, restituisce l'ID della nuova attività.

Argomenti Tipo
Applicationid
description Testo con un massimo di 254 caratteri.
taskname Testo con un massimo di 254 caratteri.
tokenGroupID
svroleID (facoltativo) Se questo argomento non è presente, viene usato un ruolo di supervisore dell'utente corrente.
contextAdaptable (facoltativo) ["0","1","N","Y"]
underconstruction (facoltativo) ["0","1","N","Y"]
auditaction (facoltativo)
  • 0: Sconosciuto (impostazione predefinita)
  • 1: ReportOnly
  • 2: AlertAppAll
  • 3: AlertAppObsolete
  • 4: AlertAppMissing
  • 5: EnforceAppAll
  • 6: EnforceAppObsolete
  • 7: EnforceAppMissing
  • 8: AlertEnforceAppAll
  • 9: AlertEnforceAppObsolete
  • 10: AlertEnforceAppMissing
  • 11: ImportAll
auditalertmail (facoltativo) L'indirizzo di posta elettronica a sono stati avvisi relativi a questa autorizzazione vengono inviati dal revisore. Se questo argomento non è presente, viene utilizzato l'indirizzo di posta elettronica dell'avviso del revisore.
MaxRoles (facoltativo) Integer
MaxUsers (facoltativo) Integer
Tipo restituito ID della nuova attività.

taskadditask

Indicare che due attività non sono compatibili.

Argomenti Tipo
Taskid
taskID2

taskaddrole

Assegna un'attività a un ruolo.

Argomenti Tipo
Roleid
Taskid

taskaddsupervisor

Rendere un utente un supervisore di un'attività.

Argomenti Tipo
svroleID È anche possibile usare l'ID utente dell'argomento. In questo caso, viene selezionato il ruolo supervisore predefinito. Un ruolo supervisore predefinito ha un nome come __svrole seguito da un numero. L'id utente dell'argomento può essere usato per la compatibilità con le versioni precedenti.
Taskid

Useradd

Crea un nuovo utente, restituisce l'ID del nuovo utente.

Argomenti Tipo
description
alias
Languageid
  • 1: inglese
  • 2: Olandese
OrgUnitID
enddate (facoltativo) Il formato della data è 'AAAA-MM-GGThh:nn:ss", dove sono necessari solo anno, mese e giorno. ad esempio "2004-12-11" e "2004-11-28T08:00" sono valori validi.
disabilitato (facoltativo)
  • 0: Abilitato
  • 1: Disabilitato
MaxPermissions (facoltativo) Integer
MaxRoles (facoltativo) Integer
Tipo restituito ID del nuovo utente.

UserAddRole

Aggiunge un ruolo utente.

Argomenti Tipo

UserDeleteRole

Elimina un ruolo utente.

Argomenti Tipo

Userupdate

Esegue l'aggiornamento di un utente.

Argomenti Tipo
UserID
descrizione (facoltativo)
Linguaggio
  • 1: inglese
  • 2: Olandese
userDisabled (facoltativo)
  • 0: Abilitato
  • 1: Disabilitato
UserEndDate (facoltativo) Il formato di data è 'AAAAA-MM-DDThh:nn:ss", dove sono necessari solo anno, mese e giorno. ad esempio "2004-12-11" e "2004-11-28T08:00" sono valori validi.
firstName (facoltativo)
middleName (facoltativo)
lastName (facoltativo)
maxPermissions (facoltativo) Integer
maxRoles (facoltativo) Integer

Funzioni GetInfo

Il set di funzioni descritte in questa sezione può essere usato per recuperare informazioni archiviate nel sistema BHOLD. Ogni funzione può essere chiamata usando la funzione GetInfo dall'oggetto BScript. Alcuni oggetti richiedono parametri. I dati restituiti sono soggetti alle autorizzazioni di visualizzazione e agli oggetti con supervisione dell'utente connessi.

Argomenti GetInfo

Nome Descrizione
scala Web Restituisce una lista di applicazioni.
attributitipi Restituisce un elenco di tipi di attributo.
orgtypes Restituisce un elenco di tipi di unità organizzativa.
OrgUnits Restituisce un elenco di unità organizzative senza gli attributi delle unità organizzative.
OrgUnitproposedroles Restituisce un elenco di ruoli proposti collegati all'unità organizzativa.
OrgUnitroles Restituisce un elenco di ruoli collegati direttamente dell'unità organizzativa specificata
Objecttypeattributetypes
autorizzazioni
permissionusers
Ruoli Restituisce un elenco di ruoli.
roletasks Restituisce un elenco di attività del ruolo specificato.
attività Restituisce tutte le attività note da BHOLD.
user Restituisce un elenco di utenti.
usersroles Restituisce l'elenco dei ruoli di supervisore collegati dell'utente specificato.
userpermissions Restituisce l'elenco delle autorizzazioni dell'utente specificato.

Informazioni orgUnit

Nome Parametri Tipo restituito
OrgUnit OrgUnitID OrgUnit
OrgUnitasiattributes OrgUnitID Raccolta
OrgUnits filtro (facoltativo), proptypeid (facoltativo)
Cerca le unità che contengono la stringa descritta nel filtro nel proptype descritto in proptypeid. Se questo ID viene omesso, il filtro si applica alla descrizione dell'unità. Se non viene fornito alcun filtro, vengono restituite tutte le unità visibili.
Raccolta
OrgUnitOrgUnits OrgUnitID Raccolta
OrgUnitparents OrgUnitID Raccolta
OrgUnitpropertyvalues OrgUnitID Raccolta
OrgUnitproptypes Raccolta
OrgUnitusers OrgUnitID Raccolta
OrgUnitproposedroles OrgUnitID Raccolta
OrgUnitroles OrgUnitID Raccolta
OrgUnitinheritedroles OrgUnitID Raccolta
OrgUnitsupervisors OrgUnitID Raccolta
OrgUnitinheritedsupervisors OrgUnitID Raccolta
OrgUnitsupervisorroles OrgUnitID Raccolta

Informazioni sul ruolo

Nome Parametri Tipo restituito
ruolo Roleid Oggetto
Ruoli filtro (facoltativo) Raccolta
roleasiattributes Roleid Raccolta
roleOrgUnits Roleid Raccolta
roleparentroles Roleid Raccolta
rolesubroles Roleid Raccolta
rolesupervisors Roleid Raccolta
rolesupervisorroles Roleid Raccolta
roletasks Roleid Raccolta
roleusers Roleid Raccolta
rolesupervisorroles Roleid Raccolta
proposeroleOrgUnits Roleid Raccolta
proposeroleusers Roleid Raccolta

Autorizzazione - Informazioni sulle attività

Nome Parametri Tipo restituito
autorizzazione TaskID Autorizzazione
autorizzazioni filtro (facoltativo) Raccolta
permissionasiattributes TaskID Raccolta
permissionattachments TaskID Raccolta
permissionattributetypes - Raccolta
permissionparams TaskID Raccolta
permissionroles TaskID Raccolta
permissionsupervisors TaskID Raccolta
permissionsupervisorroles TaskID Raccolta
permissionusers TaskID Raccolta
attività TaskID Attività
attività filtro (facoltativo) Raccolta
taskattachments TaskID Raccolta
taskparams TaskID Raccolta
taskroles TaskID Raccolta
tasksupervisors TaskID Raccolta
tasksupervisorroles TaskID Raccolta
taskusers TaskID Raccolta

Informazioni utente

Nome Parametri Tipo restituito
utente UserID Utente
user filter (facoltativo), attributetypeid (facoltativo)
Cerca gli utenti che contengono il tipo di attributo specificato da attributetypeid la stringa specificata dal filtro. Se questo ID viene omesso, il filtro si applica all'alias predefinito dell'utente. Se non viene fornito alcun filtro, vengono restituiti tutti gli utenti visibili. Ad esempio:
  • GetInfo("users") restituisce tutti gli utenti.
  • GetInfo("users", "%dmin%") restituisce tutti gli utenti con la stringa "dmin" nell'alias predefinito.
  • Si supponga che gli utenti abbiano un attributo aggiuntivo denominato "City".GetInfo("users", "%msterda%", "City"). Questa chiamata restituisce tutti gli utenti con la stringa "msterda" nell'attributo City.
UserCollection
usersapplications UserID Raccolta
Userpermissions UserID Raccolta
userroles UserID Raccolta
usersroles UserID Raccolta
userstasks UserID Raccolta
usersunits UserID Raccolta
usertasks UserID Raccolta
userunits UserID Raccolta

Tipi restituiti

In questa sezione vengono descritti i tipi restituiti della funzione GetInfo.

Nome Tipo restituito
Raccolta =<ITEMS>{<ITEM description="..." id="..." />}</ITEMS>
Oggetto =<ITEM type="…" description="..." />
OrgUnit = <ITEM id="…" description="..." orgtype="..." parent="..."> <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>
Autorizzazione = <ITEM id="…" description="…" name="…" tokengroup="…" application="…" > <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>
Ruoli = <ITEMS> {<ITEM id="…" description="…" />} </ITEMS>
Ruolo = <ITEM id="…" description="… " > <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>
Attività Vedere Autorizzazione
Utenti = <ITEMS> {<ITEM description="…" id="…" alias="…" />} </ITEMS>
Utente = <ITEM id="…" description="…" alias="…" firstname="…" lastname="…" uuid="…" language="…"> <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>

Esempio di script

Una società dispone di un server BHOLD e vuole uno script automatizzato che crea nuovi clienti. Le informazioni relative all'azienda e al responsabile degli acquisti vengono immesse in una pagina Web personalizzata. Ogni cliente viene presentato nel modello come unità sotto l'unità clienti. Il responsabile degli acquisti è anche membro di questa unità. Viene creato un ruolo che concede ai proprietari il diritto di acquistare in nome del nuovo cliente.

Tuttavia, questo cliente non esiste nell'applicazione. Esiste una funzione speciale implementata nella funzione ASIDispatch che crea un nuovo account cliente nell'applicazione di acquisto. Ogni cliente ha un tipo di cliente.

I tipi possibili possono essere presentati anche dalla funzione FunctionDispatch. L'AA sceglie il tipo corretto per il nuovo cliente.

Creare un ruolo e un'attività per presentare i privilegi di acquisto. Il privilegio di acquisto reale viene presentato dall'ambiente del servizio app come file /customers/customer id/purchase. Questo file deve essere collegato alla nuova attività.

La pagina Server attivo che raccoglie le informazioni è simile alla seguente:

<%@ 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>

Tutte le pagine personalizzate devono richiedere le informazioni corrette e creare un documento XML con le informazioni richieste. In questo esempio, la pagina MySubmit trasforma i dati nel documento XML, assegnandolo a b1script. L'oggetto Parameters e infine chiama la b1script.ExecuteScript("MyScript") funzione .

Lo script di input seguente mostra questo esempio:

<customer>
<description>ACME inc.</description>
<orgtype>5<orgtype>
<name>John Doe</name>
<alias>jdoe</alias>
<email>jdoe@acme.com</email>
</customer>

Questo script di input non contiene comandi per BHOLD. Questo perché questo script non viene eseguito direttamente da BHOLD; invece di esso, questo è l'input per una funzione predefinita. Questa funzione predefinita converte questo oggetto in un documento XML con comandi BHOLD. Questo meccanismo impedisce all'utente di inviare script al sistema BHOLD che contiene funzioni che l'utente non è autorizzato a eseguire, ad esempio setUser e function dispatches a un ambiente del servizio app.

<?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>

Passaggi successivi