Compartir a través de


Referencia para desarrolladores 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. También interactúa con la interfaz b1scriptservice.asmx del servicio web.

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

  • Entrada del 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 comandos que pueden presentar todos los datos almacenados en la base de datos BHOLD. Sin embargo, los datos presentados están sujetos a los permisos de vista del usuario que inició sesión. El resultado está en 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 otra manera, el script puede contener comandos directamente a otras aplicaciones o sistemas. NoLanstallation 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 comando BHOLD.

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

Recuperación de 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 ejecuta correctamente, se devuelve un objeto o colección BHOLD en forma de documento XML.

Si la función no se ejecuta 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 asi y un documento XML con información complementaria para 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 web b1scriptservice. Para ello, se agrega una referencia web al proyecto mediante http://<servidor>:5151/BHOLD/Core/b1scriptservice.asmx donde <servidor> es el servidor con los archivos binarios de BHOLD instalados. Para obtener más información, vea Agregar 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 de 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, 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 lo que salió mal. A continuación se muestra un ejemplo de 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 después de ejecutar la función executescript de. 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 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 los valores numéricos de los 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 identificador Campo de búsqueda
OrgUnitID Descripción
roleID Descripción
taskID Descripción
userID DefaultAlias

Acceso y permisos de script

El código del lado servidor en las páginas active server 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 lenguajes).

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 en el menú presenta todas las funciones personalizadas que el usuario puede ejecutar. Dado que un script puede realizar acciones en el sistema BHOLD en una identidad diferente del usuario que inició 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 pueda ingresar nuevos clientes a la empresa. Estos scripts también se pueden usar para crear páginas de registro automático.

Script de comandos

El script de comandos 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 comandos <functions>functions</functions>
functions función {function}
función <function name="functionName" functionParameters [return] (/> | > parameterList </function>)
functionName Un nombre de función válido como se describe en las secciones siguientes.
functionParameters { functionParameter }
functionParameter parameterName = "parameterValue"
parameterName Un nombre de parámetro válido.
parameterValue @variable@ | valor
valor Valor de parámetro válido.
parameterList <parámetros> {parameterItem} </parameters>
parameterItem <parámetro 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 comando 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 Mensaje de texto
RuleType Especifique el tipo de regla de atributo. Según el 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: Range (agregue argumentos "rangemin" y "rangemax").
  • 4: Edad (agregue argumentos "operator" y "value").
InvertResult ["0"|"1"|"N"|"Y"]
AttributeTypeID Mensaje de 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 Número
Nota: este argumento es obligatorio si RuleType es 3.
RangeMax Número
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 Mensaje de texto

applicationadd

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

Argumentos Tipo
descripción
machine
module
parámetro
protocolo
username
contraseña
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 podría usar texto libre. Los caracteres reservados son corchetes izquierdos ([) y corchete derecho (]). Por ejemplo: [Application.bholdDescription]\[User.bholdDefAlias(1,5)].
Tipo de valor devuelto Id. 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 Mensaje de texto
ObjectID Mensaje de texto
AttributeTypeID Mensaje de texto
Valor Mensaje de texto
Tipo de retorno Tipo

AttributeTypeAdd

Inserta un nuevo tipo de atributo o tipo de propiedad.

Argumentos Tipo
DataTypeID Mensaje de 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 Mensaje de texto
Tipo de retorno Tipo
AttributeTypeID Mensaje de 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) Mensaje de texto
Tipo de retorno Tipo
AttributeTypeSetID Mensaje de 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 Mensaje de texto
AttributeTypeID Mensaje de texto
Pedido Número
LocationID Texto
Nota: la ubicación es "group" o "single".
Obligatorio ["0"|"1"|"N"|"Y"]
Tipo de retorno 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 Mensaje de texto
AttributeTypeSetID Mensaje de texto
Pedido Número
Visible
  • 0: El conjunto de tipos de atributo está visible.
  • 2: El conjunto de tipos de atributo está visible cuando se selecciona el más información botón.
  • 1: El conjunto de tipos de atributo es invisible.
Tipo de retorno Tipo

OrgUnitad

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

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

OrgUnitadddsupervisor

Convierta a un usuario en supervisor de una unidad organizativa.

Argumentos Tipo
svroleID El argumento userID también se puede usar. 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

Convertir a un usuario en miembro de una unidad organizativa.

Argumentos Tipo
userID
OrgUnitID

OrgUnitdelete

Quita una unidad organizativa.

Argumentos Tipo
OrgUnitID

OrgUnitdeleteuser

Quita un usuario como miembro de una unidad organizativa.

Argumentos Tipo
userID
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 retorno 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 subrole de otro rol.

Argumentos Tipo
roleID
subRoleID

roleaddsupervisor

Convierta a un usuario en supervisor de un rol.

Argumentos Tipo
svroleID El argumento userID también se puede usar. 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 valor contextID.

Argumentos Tipo
userID
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 del número de horas o días asignados al 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 proporcionan 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 Obligatorio cuando se da inicio, fin o duración; de lo contrario, se omite.
contextId (opcional) Identificador de la unidad organizativa, solo necesario para 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
userID
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 Requerido cuando durationType es "horas" o "días", debe contener el valor entero para el número de horas o días que el rol está asignado 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
descripción 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 muestran las alertas sobre este permiso. Si este argumento no está presente, se usará la dirección de correo electrónico de alerta del auditor.
MaxRoles (opcional) Entero
MaxUsers (opcional) Entero
Tipo de retorno Id. 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 El argumento userID también se puede usar. 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
descripción
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 retorno Id. 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)
lenguaje
  • 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 inició sesión.

Argumentos GetInfo

Nombre Descripción
Aplicaciones 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
Papeles 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 retorno
OrgUnit OrgUnitID OrgUnit
OrgUnitasiattributes OrgUnitID Colección
OrgUnits filter (opcional), proptypeid (opcional)
Busca unidades que contengan la cadena descrita en filtro en el 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 retorno
role roleID Objeto
Papeles 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 retorno
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 del usuario

Nombre Parámetros Tipo de retorno
usuario UserID Usuario
users filter (opcional), attributetypeid (opcional)
Busca usuarios que contengan en el tipo de atributo 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 devueltos de la función GetInfo.

Nombre Tipo de retorno
Colección =<ITEMS>{<ITEM description="..." id="..." />}</ITEMS>
Objeto =<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>
Rol = <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 crea 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 es también miembro como supervisor de esta unidad. Se crea un rol que proporciona a los propietarios el derecho de comprar en nombre del nuevo cliente.

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

La función FunctionDispatch también puede presentar los tipos posibles. 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 lo presenta 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 este 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 del documento XML, asígnelos al b1script. Los parámetros objeto y, por último, llaman a la función b1script.ExecuteScript("MyScript").

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 ello, esta es la entrada de una función predefinida. Esta función predefinida traduce este objeto a 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 distribuye a 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

  • guía de conceptos de BHOLD
  • del historial de versiones de BHOLD