Compartir a través de


Referencia del desarrollador de BHOLD para Microsoft Identity Manager 2016

El módulo BHOLD-core puede procesar comandos de script. Se puede hacer directamente mediante el bscript.dll en un proyecto de .NET. Interactúe también con la interfaz b1scriptservice.asmx del servicio web.

Antes de que se haya ejecutado un script, se debe recopilar toda la información dentro del script para componer este script. Esta información se puede recopilar de los orígenes siguientes:

  • Entrada de usuario
  • Datos de BHOLD
  • APLICACIONES
  • Otros

Los datos de BHOLD se pueden recuperar mediante la función GetInfo del objeto de script. Hay una lista completa de los comandos que pueden presentar todos los datos almacenados en la base de datos de BHOLD. Sin embargo, los datos presentados están sujetos a los permisos de vista del usuario que ha iniciado sesión. El resultado tiene la forma de un documento XML que se puede analizar.

Otro origen de información puede ser una de las aplicaciones controladas por BHOLD. El complemento de aplicación tiene una función especial, FunctionDispatch, que se puede usar para presentar información específica de la aplicación. Esto también se presenta como un documento XML.

Por último, si no hay ninguna otra manera, el script puede contener comandos directamente en otras aplicaciones o sistemas. NoLastallation of extra software on the BHOLD server can mina la seguridad de todo el sistema.

Toda esta información se coloca en un documento XML y se asigna al objeto de script BHOLD. El objeto combina este documento con una función predefinida. La función predefinida es un documento XSL que traduce el documento de entrada del script en un documento de comandos de BHOLD.

Procesamiento de scripts de BHOLD

Los comandos se ejecutan en el mismo orden que en el documento. Si se produce un error en una función, se revierten todos los comandos ejecutados.

Script (objeto)

En esta sección se describe cómo usar el objeto de script.

Recuperar información de BHOLD

La función GetInfo se usa para recuperar información de los datos disponibles en el sistema de autorización de BHOLD. La función requiere un nombre de función y, finalmente, uno o varios parámetros. Si esta función se realiza correctamente, se devuelve un objeto o una colección BHOLD en forma de documento XML.

Si la función no se realiza correctamente, la función GetInfo devuelve una cadena vacía o un error. La descripción del error y el número se pueden usar para obtener más información sobre el error.

La función GetInfo 'FunctionDispatch' se puede usar para recuperar información de una aplicación controlada por el sistema BHOLD. Esta función requiere tres parámetros: el identificador de la aplicación, la función de distribución tal como se define en el ASI, y un documento XML con información complementaria para el ASI. Si la función se realiza correctamente, el resultado está disponible en formato XML en el objeto de resultado.

El fragmento de código siguiente es un ejemplo sencillo de C# de GetInfo:

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

Del mismo modo, también se puede acceder al objeto BScript a través del servicio b1scriptserviceweb . Esto se hace agregando una referencia web al proyecto mediante http://< server>:5151/BHOLD/Core/b1scriptservice.asmx donde <el servidor> es el servidor con los archivos binarios de BHOLD instalados. Para obtener más información, consulte Adición de una referencia de servicio web a un proyecto de Visual Studio.

En el ejemplo siguiente se muestra cómo usar la función GetInfo desde un servicio web. Este código recupera la unidad organizativa que tiene un orgID de 1 y, a continuación, muestra el nombre de esa unidad organizativa en la pantalla.

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

        }
    }
}

En el siguiente ejemplo de VBScript se usa el servicio web a través de SOAP y mediante GetInfo. Para obtener ejemplos adicionales de SOAP 1.1, SOAP 1.2 y HTTP POST, consulte la sección Referencia administrada de BHOLD o puede navegar al servicio web directamente desde un explorador y verlos allí.

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

Ejecutar scripts

La función ExecuteScript del objeto BScript se puede usar para ejecutar scripts. Esta función requiere dos parámetros. El primer parámetro es el documento XML que contiene la información personalizada que va a usar el script. El segundo parámetro es el nombre del script predefinido que se va a usar. En el directorio de scripts predefinidos de BHOLD, este debe ser un documento XSL con el mismo nombre que la función, pero con la extensión .xsl.

Si la función no se realiza correctamente, la función ExecuteScript devuelve el valor False. La descripción del error y el número se pueden usar para saber qué salió mal. A continuación se muestra un ejemplo del uso del método web ExecuteXML. Este método invoca 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

Esta función GetInfo está disponible una vez ejecutada la función executescript . La función devuelve una cadena con formato XML que contiene el informe de ejecución completo. El nodo Script contiene la estructura XML del script ejecutado.

Para cada función que produce un error durante la ejecución del script, se agrega una función de nodo con el nombre de los nodos. ExecuteXML y Error se agregan al final del documento todos los identificadores generados.

Observe que solo se agregan las funciones que contienen un error. Un número de error de '0' significa que la función no se ejecuta.

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

Parámetros de identificador

Los parámetros de id. obtienen un tratamiento especial. Los valores no numéricos se usan como valor de búsqueda para buscar las entidades correspondientes en el almacén de datos de BHOLD. Cuando el valor de búsqueda no es único, se devuelve la primera entidad que cumple con el valor de búsqueda.

Para distinguir valores de búsqueda numéricos de identificadores, es posible usar un prefijo. Cuando los seis primeros caracteres del valor de búsqueda son iguales a 'no_id:', estos caracteres se quitan antes de que se use el valor para la búsqueda. Se pueden usar caracteres comodín de SQL '%'.

Los campos siguientes se usan con el valor de búsqueda:

Tipo de Id. Campo Buscar
OrgUnitID Descripción
roleID Descripción
Taskid Descripción
Identificador de usuario DefaultAlias

Acceso y permisos de script

El código del lado servidor de las páginas del servidor activo se usa para ejecutar los scripts. Por lo tanto, el acceso al script significa acceso a estas páginas. El sistema BHOLD mantiene información sobre los puntos de entrada de las páginas personalizadas. Esta información incluye la página de inicio y la descripción de la función (se deben admitir varios idiomas).

Un usuario está autorizado para poder escribir las páginas personalizadas y ejecutar un script. Cada punto de entrada se presenta como una tarea. Cada usuario que obtuvo esta tarea a través de un rol o una unidad puede ejecutar la función correspondiente.

Una nueva función del menú presenta todas las funciones personalizadas que el usuario puede ejecutar. Dado que un script puede realizar acciones en el sistema BHOLD bajo una identidad diferente del usuario que ha iniciado sesión. Es posible conceder permiso para realizar una acción específica sin tener supervisión sobre ningún objeto. Por ejemplo, esto podría ser útil para un empleado que solo puede ingresar nuevos clientes a la empresa. Estos scripts también se pueden usar para crear páginas de registro automático.

Script de comando

El script de comando contiene una lista de funciones ejecutadas por el sistema BHOLD. La lista se escribe en un documento XML que se ajusta a las definiciones siguientes:

Script de comando <functions>functions</functions>
functions función {function}
function <function name="functionName" functionParameters [return] (/> | > parameterList </function>)
functionName Un nombre de función válido, tal y como se describe en las secciones siguientes.
functionParameters { functionParameter }
functionParameter parameterName = "parameterValue"
parameterName Un nombre de parámetro válido.
parameterValue @variable@ | Valor
value Valor de parámetro válido.
parameterList <parámetros> {parameterItem} </parameters>
parameterItem <parameter name="parameterName"> parameterValue </parameter>
return return="@variable@"
variable Un nombre de variable personalizado.

XML tiene las siguientes traducciones de caracteres especiales:

XML Carácter
&amp; &
&lt; <
&gt; >
&quot; "
&apos; '

Estos caracteres XML se pueden usar en identificadores, pero no se recomiendan.

En el código siguiente se muestra un ejemplo de un documento de comandos válido con tres funciones:

<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 función OrgUnitAdd almacena el identificador de la unidad creada en una variable denominada UnitID. Esta variable se usa como entrada para la función UserAdd. No se usa el valor devuelto de esta función. En las secciones siguientes se describen todas las funciones disponibles, los parámetros necesarios y sus valores devueltos.

Ejecutar funciones

En esta sección se describe cómo usar las funciones de ejecución.

ABAAttributeRuleAdd

Cree una nueva regla de atributo en un tipo de atributo específico. Las reglas de atributo solo se pueden vincular a un tipo de atributo.

La regla de atributo especificada se puede vincular a todos los tipos de atributo posibles.

RuleType no se puede cambiar con el comando "ABAattributeruletypeupdate". Requiere que la descripción del atributo sea única.

Argumentos Tipo
Descripción Texto
RuleType Especifique el tipo de regla de atributo. En función del tipo de regla de atributo, se deben incluir otros argumentos. Los siguientes valores de tipo de regla son válidos:
  • 0: Expresión regular (agregar argumento "valor").
  • 1: Valor (agregue argumentos "operator" y "value").
  • 2: Lista de valores.
  • 3: Rango (agregue argumentos "rangemin" y "rangemax").
  • 4: Edad (agregue argumentos "operator" y "value").
InvertResult ["0"|"1"|"N"|"Y"]
AttributeTypeID Texto
Argumentos opcionales Tipo
Operador Texto
Nota: Este argumento es obligatorio si RuleType es 1 o 4. Los valores posibles son '=', '<' o '>'. Las etiquetas XML deben usar ">" para ">" y "<" para "<".
RangeMin Number
Nota: Este argumento es obligatorio si RuleType es 3.
RangeMax Number
Nota: Este argumento es obligatorio si RuleType es 3.
Valor Texto
Nota: Este argumento es obligatorio si RuleType es 0, 1 o 4. El argumento debe ser un valor numérico o alfanumérico.
Tipo de valor devuelto AttributeRuleID Texto

applicationadd

Crea una nueva aplicación y devuelve el identificador de la nueva aplicación.

Argumentos Tipo
description
equipo
módulo
parámetro
protocol
username
password
svroleID (opcional) Si este argumento no está presente, se usa un rol de supervisor del usuario actual.
Applicationaliasformula (opcional) La fórmula de alias se usa para crear un alias para un usuario cuando se asigna a un permiso de la aplicación. El alias se crea si el usuario aún no tiene un alias para esta aplicación. Si no se da ningún valor, se usa el alias predeterminado del usuario como alias para la aplicación. La fórmula tiene el formato [<<objecttype>>.<<nameofobjecttypeattribute>>(startindexoffset,length offset)]. El desplazamiento es opcional. Solo se pueden usar los atributos User y Application. Se puede usar texto libre. Los caracteres reservados son corchete izquierdo ([) y corchete derecho (]). Por ejemplo: [Application.bholdDescription]\[User.bholdDefAlias(1,5)].
Tipo de valor devuelto Identificador de la nueva aplicación.

AttributeSetValue

Establece el valor de un tipo de atributo conectado al tipo de objeto. Requiere que las descripciones del tipo de objeto y el tipo de atributo sean únicos.

Argumentos Tipo
ObjectTypeID Texto
ObjectID Texto
AttributeTypeID Texto
Valor Texto
Tipo de valor devuelto Tipo

AttributeTypeAdd

Inserta un nuevo tipo de atributo o tipo de propiedad.

Argumentos Tipo
DataTypeID Texto
Descripción (=Identidad) Texto
Nota: No se pueden usar palabras reservadas, incluidas 'a', 'frm', 'id', 'usr' y 'bhold'.
MaxLength Número en [1,..,255]
ListOfValues (booleano) ["0"|"1"|"N"|"Y"]
DefaultValue Texto
Tipo de valor devuelto Tipo
AttributeTypeID Texto

AttributeTypeSetAdd

Inserta un nuevo conjunto de tipos de atributo. Requiere que la descripción de un conjunto de tipos de atributo sea única.

Argumentos Tipo
Descripción (=Identidad) Texto
Tipo de valor devuelto Tipo
AttributeTypeSetID Texto

AttributeTypeSetAddAttributeType

Inserta un nuevo tipo de atributo en un conjunto de tipos de atributo existente. Requiere que las descripciones del conjunto de tipos de atributo y el tipo de atributo sean únicos.

Argumentos Tipo
AttributeTypeSetID Texto
AttributeTypeID Texto
Pedido de Number
LocationID Texto
Nota: La ubicación es "group" o "single".
Mandatory ["0"|"1"|"N"|"Y"]
Tipo de valor devuelto Tipo

ObjectTypeAddAttributeTypeSet

Agrega un tipo de atributo establecido a un tipo de objeto. Requiere que la descripción del tipo de objeto y el conjunto de tipos de atributo sean únicos. Los tipos de objeto son: System, OrgUnit, User, Task.

Argumentos Tipo
ObjectTypeID Texto
AttributeTypeSetID Texto
Pedido de Number
Visible
  • 0: El conjunto de tipos de atributo está visible.
  • 2: El conjunto de tipos de atributo está visible cuando se selecciona el botón más información .
  • 1: El conjunto de tipos de atributo es invisible.
Tipo de valor devuelto Tipo

OrgUnitad

Crea una nueva unidad organizativa y devuelve el identificador de la nueva unidad organizativa.

Argumentos Tipo
description
orgtypeID
parentID
OrgUnitinheritedroles (opcional)
Tipo de valor devuelto Tipo
Identificador de la nueva unidad Parámetro OrgUnitinheritedroles
tiene el valor sí o no.

OrgUnitaddsupervisor

Convierta a un usuario en supervisor de una unidad organizativa.

Argumentos Tipo
svroleID También se puede usar el argumento userID. En este caso, se selecciona el rol de supervisor predeterminado. Un rol de supervisor predeterminado tiene un nombre como __svrole seguido de un número. El argumento userID se puede usar para la compatibilidad con versiones anteriores.
OrgUnitID

OrgUnitadduser

Convierta a un usuario en miembro de una unidad organizativa.

Argumentos Tipo
Identificador de usuario
OrgUnitID

OrgUnitdelete

Quita una unidad organizativa.

Argumentos Tipo
OrgUnitID

OrgUnitdeleteuser

Quita un usuario como miembro de una unidad organizativa.

Argumentos Tipo
Identificador de usuario
OrgUnitID

roleadd

Crea un nuevo rol.

Argumentos Tipo
Descripción
svrole
svroleID (opcional) Si este argumento no está presente, se usa un rol de supervisor del usuario actual.
ContextAdaptable (opcional) ["0","1","N","Y"]
MaxPermissions (opcional) Entero
MaxRoles (opcional) Entero
MaxUsers (opcional) Entero
Tipo de valor devuelto Tipo
Identificador del nuevo rol

roleaddOrgUnit

Asigna un rol a una unidad organizativa.

Argumentos Tipo
OrgUnitID roleID
inheritThisRole 'true' o 'false', indica si el rol se propone a las unidades subyacentes.

roleaddrole

Asigna un rol como suplente de otro rol.

Argumentos Tipo
roleID
subRoleID

roleaddsupervisor

Convierta a un usuario en supervisor de un rol.

Argumentos Tipo
svroleID También se puede usar el argumento userID. En este caso, se selecciona el rol de supervisor predeterminado. Un rol de supervisor predeterminado tiene un nombre como __svrole seguido de un número. El argumento userID se puede usar para la compatibilidad con versiones anteriores.
roleID

roleadduser

Asigna un rol a un usuario. El rol no puede ser un rol adaptable al contexto cuando no se da ningún contextID.

Argumentos Tipo
Identificador de usuario
roleID
durationType (opcional) Puede contener los valores "gratis", "horas" y "días".
durationLength (opcional) Obligatorio cuando durationType es "horas" o "días". debe contener el valor entero para el número de horas o días a los que se asigna el rol a un usuario.
start (opcional) Fecha y hora en que se asigna el rol. Cuando se omite este atributo, el rol se asigna inmediatamente. El formato de fecha es "AAAA-MM-DDThh:nn:ss", donde solo se requieren año, mes y día. por ejemplo, "2004-12-11" y "2004-11-28T08:00" son valores válidos.
end (opcional) Fecha y hora en que se revoca el rol. Cuando se da durationType y durationLength, este valor se omite. El formato de fecha es "AAAA-MM-DDThh:nn:ss", donde solo se requieren año, mes y día. por ejemplo, "2004-12-11" y "2004-11-28T08:00" son valores válidos.
linkreason Se requiere cuando se da inicio, fin o duración; de lo contrario, se omite.
contextId (opcional) Identificador de la unidad organizativa, solo necesaria para los roles adaptables al contexto.

roledelete

Elimina un rol.

Argumentos Tipo
roleID

roledeleteuser

Quita la asignación de roles a un usuario. Este comando revoca los roles heredados por el usuario.

Argumentos Tipo
Identificador de usuario
roleID
contextID (opcional)

roleproposeOrgUnit

Propone un rol para asignarlo a los miembros y a los sub-OrgUnits de un OrgUnit.

Argumentos Tipo
OrgUnitID
roleID
durationType (opcional) Puede contener valores "gratis", "horas" y "días".
durationLength Necesario cuando durationType es "horas" o "días", debe contener el valor entero para el número de horas o días a los que se asigna el rol a un usuario.
durationFixed "true" o "false", indica si la asignación de este rol a un usuario debe ser igual a durationLength.
inheritThisRole 'true' o 'false', indica si el rol se propone a las unidades subyacentes.

taskadd

Crea una nueva tarea y devuelve el identificador de la nueva tarea.

Argumentos Tipo
applicationID
description Texto con un máximo de 254 caracteres.
taskname Texto con un máximo de 254 caracteres.
tokenGroupID
svroleID (opcional) Si este argumento no está presente, se usa un rol de supervisor del usuario actual.
contextAdaptable (opcional) ["0","1","N","Y"]
subconstrucción (opcional) ["0","1","N","Y"]
auditaction (opcional)
  • 0: Desconocido (valor predeterminado)
  • 1: ReportOnly
  • 2: AlertAppAll
  • 3: AlertAppObsolete
  • 4: AlertAppMissing
  • 5: EnforceAppAll
  • 6: EnforceAppObsolete
  • 7: EnforceAppMissing
  • 8: AlertEnforceAppAll
  • 9: AlertEnforceAppObsolete
  • 10: AlertEnforceAppMissing
  • 11: ImportAll
auditalertmail (opcional) El auditor envía la dirección de correo electrónico a la que se van a enviar alertas sobre este permiso. Si este argumento no está presente, se utiliza la dirección de correo electrónico de alerta del auditor.
MaxRoles (opcional) Entero
MaxUsers (opcional) Entero
Tipo de valor devuelto Identificador de la nueva tarea.

taskadditask

Indique que dos tareas no son compatibles.

Argumentos Tipo
Taskid
taskID2

taskaddrole

Asigna una tarea a un rol.

Argumentos Tipo
roleID
Taskid

taskaddsupervisor

Convierta a un usuario en supervisor de una tarea.

Argumentos Tipo
svroleID También se puede usar el argumento userID. En este caso, se selecciona el rol de supervisor predeterminado. Un rol de supervisor predeterminado tiene un nombre como __svrole seguido de un número. El argumento userID se puede usar para la compatibilidad con versiones anteriores.
Taskid

Useradd

Crea un nuevo usuario y devuelve el identificador del nuevo usuario.

Argumentos Tipo
description
alias
Languageid
  • 1: Inglés
  • 2: Neerlandés
OrgUnitID
enddate (opcional) El formato de fecha es "AAAA-MM-DDThh:nn:ss", donde solo se requieren año, mes y día. por ejemplo, "2004-12-11" y "2004-11-28T08:00" son valores válidos.
deshabilitado (opcional)
  • 0: Habilitado
  • 1: Deshabilitado
MaxPermissions (opcional) Entero
MaxRoles (opcional) Entero
Tipo de valor devuelto Identificador del nuevo usuario.

UserAddRole

Agrega un rol de usuario.

Argumentos Tipo

UserDeleteRole

Elimina un rol de usuario.

Argumentos Tipo

Userupdate

Actualiza un usuario.

Argumentos Tipo
UserID
description (opcional)
language
  • 1: Inglés
  • 2: Neerlandés
userDisabled (opcional)
  • 0: Habilitado
  • 1: Deshabilitado
UserEndDate (opcional) El formato de fecha es "AAAA-MM-DDThh:nn:ss", donde solo se requieren año, mes y día. Por ejemplo, "2004-12-11" y "2004-11-28T08:00" son valores válidos.
firstName (opcional)
middleName (opcional)
lastName (opcional)
maxPermissions (opcional) Entero
maxRoles (opcional) Entero

Funciones GetInfo

El conjunto de funciones descritas en esta sección se puede usar para recuperar información almacenada en el sistema BHOLD. Se puede llamar a cada función mediante la función GetInfo del objeto BScript. Algunos objetos requieren parámetros. Los datos devueltos están sujetos a los permisos de vista y a los objetos supervisados del usuario que ha iniciado sesión.

Argumentos GetInfo

Nombre Descripción
applications Devuelve una lista de aplicaciones.
attributetypes Devuelve una lista de tipos de atributo.
orgtypes Devuelve una lista de tipos de unidad organizativa.
OrgUnits Devuelve una lista de unidades organizativas sin los atributos de las unidades organizativas.
OrgUnitproposedroles Devuelve una lista de roles propuestos vinculados a la unidad organizativa.
OrgUnitroles Devuelve una lista de roles vinculados directamente de la unidad organizativa determinada.
Objecttypeattributetypes
permisos
permissionusers
roles Devuelve una lista de roles.
roletasks Devuelve una lista de tareas del rol especificado.
tareas Devuelve todas las tareas conocidas por BHOLD.
users Devuelve una lista de usuarios.
usersroles Devuelve la lista de roles de supervisor vinculados del usuario especificado.
userpermissions Devuelve la lista de permisos del usuario especificado.

Información de OrgUnit

Nombre Parámetros Tipo de valor devuelto
OrgUnit OrgUnitID OrgUnit
OrgUnitasiattributes OrgUnitID Colección
OrgUnits filter (opcional), proptypeid (opcional)
Busca unidades que contengan la cadena descrita en filtro en el tipo proptype descrito en proptypeid. Si se omite este identificador, el filtro se aplica a la descripción de la unidad. Si no se proporciona ningún filtro, se devuelven todas las unidades visibles.
Colección
OrgUnitOrgUnits OrgUnitID Colección
OrgUnitparents OrgUnitID Colección
OrgUnitpropertyvalues OrgUnitID Colección
OrgUnitproptypes Colección
OrgUnitusers OrgUnitID Colección
OrgUnitproposedroles OrgUnitID Colección
OrgUnitroles OrgUnitID Colección
OrgUnitinheritedroles OrgUnitID Colección
OrgUnitsupervisors OrgUnitID Colección
OrgUnitinheritedsupervisors OrgUnitID Colección
OrgUnitsupervisorroles OrgUnitID Colección

Información de roles

Nombre Parámetros Tipo de valor devuelto
rol roleID Object
roles filter (opcional) Colección
roleasiattributes roleID Colección
roleOrgUnits roleID Colección
roleparentroles roleID Colección
rolesubroles roleID Colección
rolesupervisors roleID Colección
rolesupervisorroles roleID Colección
roletasks roleID Colección
roleusers roleID Colección
rolesupervisorroles roleID Colección
proposedroleOrgUnits roleID Colección
proposedroleusers roleID Colección

Permiso: información de tareas

Nombre Parámetros Tipo de valor devuelto
permiso TaskID Permiso
permisos filter (opcional) Colección
permissionasiattributes TaskID Colección
permissionattachments TaskID Colección
permissionattributetypes - Colección
permissionparams TaskID Colección
permissionroles TaskID Colección
permissionsupervisors TaskID Colección
permissionsupervisorroles TaskID Colección
permissionusers TaskID Colección
task TaskID Tarea
tareas filter (opcional) Colección
taskattachments TaskID Colección
taskparams TaskID Colección
taskroles TaskID Colección
tasksupervisors TaskID Colección
tasksupervisorroles TaskID Colección
taskusers TaskID Colección

Información de usuario

Nombre Parámetros Tipo de valor devuelto
usuario UserID Usuario
users filter (opcional), attributetypeid (opcional)
Busca usuarios que contengan en el atributotype especificado por attributetypeid la cadena especificada por filtro. Si se omite este identificador, el filtro se aplica al alias predeterminado del usuario. Si no se proporciona ningún filtro, se devuelven todos los usuarios visibles. Por ejemplo:
  • GetInfo("users") devuelve todos los usuarios.
  • GetInfo("users", "%dmin%") devuelve todos los usuarios con la cadena "dmin" en el alias predeterminado.
  • Supongamos que los usuarios tienen un atributo adicional denominado "City".GetInfo("users", "%msterda%", "City"). Esta llamada devuelve todos los usuarios que tienen la cadena "msterda" en el atributo City.
UserCollection
usersapplications UserID Colección
Userpermissions UserID Colección
userroles UserID Colección
usersroles UserID Colección
userstasks UserID Colección
usersunits UserID Colección
usertasks UserID Colección
userunits UserID Colección

Tipos de valores devueltos

En esta sección, se describen los tipos de valor devueltos de la función GetInfo.

Nombre Tipo de valor devuelto
Colección =<ITEMS>{<ITEM description="..." id="..." />}</ITEMS>
Object =<ITEM type="…" description="..." />
OrgUnit = <ITEM id="…" description="..." orgtype="..." parent="..."> <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>
Permiso = <ITEM id="…" description="…" name="…" tokengroup="…" application="…" > <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>
Roles = <ITEMS> {<ITEM id="…" description="…" />} </ITEMS>
Role = <ITEM id="…" description="… " > <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>
Tarea Consulte Permiso.
Usuarios = <ITEMS> {<ITEM description="…" id="…" alias="…" />} </ITEMS>
Usuario = <ITEM id="…" description="…" alias="…" firstname="…" lastname="…" uuid="…" language="…"> <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>

Ejemplo de script

Una empresa tiene un servidor BHOLD y quiere un script automatizado que cree nuevos clientes. La información sobre la empresa y su administrador de compras entra en una página web personalizada. Cada cliente se presenta en el modelo como una unidad bajo los clientes de la unidad. El administrador de compras también es miembro como supervisor de esta unidad. Se crea un rol que proporciona a los propietarios el derecho de compra en nombre del nuevo cliente.

Sin embargo, este cliente no existe en la aplicación. Hay una función especial implementada en la functionDispatch de ASI que crea una nueva cuenta de cliente en la aplicación de compra. Cada cliente tiene un tipo de cliente.

También se pueden presentar los tipos posibles mediante la función FunctionDispatch. AA elige el tipo correcto para el nuevo cliente.

Cree un rol y una tarea para presentar los privilegios de compra. El privilegio de compra real se presenta por el ASI como un archivo /customers/customer id/purchase. Este archivo debe estar vinculado a la nueva tarea.

La página Servidor activo que recopila la información tiene el siguiente aspecto:

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

Todas las páginas personalizadas tendrían que hacer es solicitar la información correcta y crear un documento XML con la información solicitada. En este ejemplo, la página MySubmit transforma los datos en el documento XML, asígnelos al b1script. Parameters object y, por último, llama a la b1script.ExecuteScript("MyScript") función .

El siguiente script de entrada muestra este ejemplo:

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

Este script de entrada no contiene ningún comando para BHOLD. Esto se debe a que BHOLD no ejecuta directamente este script; en lugar de él, esta es la entrada de una función predefinida. Esta función predefinida convierte este objeto en un documento XML con comandos BHOLD. Este mecanismo impide que el usuario envíe scripts al sistema BHOLD que contenga funciones que el usuario no puede ejecutar, como setUser y function se envía a un 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>

Pasos siguientes