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.
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 b1scriptservice
web . 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 |
---|---|
& |
& |
< |
< |
> |
> |
" |
" |
' |
' |
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:
|
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 |
|
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) |
|
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 |
|
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) |
|
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 |
|
userDisabled (opcional) |
|
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:
|
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>