Compartilhar via


Referência de desenvolvedor do BHOLD para Microsoft Identity Manager 2016

O módulo BHOLD-core pode processar comandos de script. Isso pode ser feito usando diretamente o bscript.dll em um projeto .NET. Também interagindo com o serviço Web b1scriptservice.asmx interface.

Antes que um script seja executado, todas as informações dentro do script devem ser coletadas para compor esse script. Essas informações podem ser coletadas das seguintes fontes:

  • Entrada do usuário
  • Dados do BHOLD
  • Aplicativos
  • Outro

Os dados do BHOLD podem ser recuperados usando a função GetInfo do objeto script. Há uma lista completa de comandos que podem apresentar todos os dados armazenados no banco de dados BHOLD. No entanto, os dados apresentados estão sujeitos às permissões de exibição do usuário conectado. O resultado é na forma de um documento XML que pode ser analisado.

Outra fonte de informações pode ser um dos aplicativos controlados pelo BHOLD. O snap-in do aplicativo tem uma função especial, o FunctionDispatch, que pode ser usado para apresentar informações específicas do aplicativo. Isso também é apresentado como um documento XML.

Por fim, se não houver outra maneira, o script poderá conter comandos diretamente para outros aplicativos ou sistemas. A noThenstallation de software extra no servidor BHOLD pode prejudicar a segurança de todo o sistema.

Todas essas informações são colocadas em um documento XML e atribuídas ao objeto de script BHOLD. O objeto combina este documento com uma função predefinida. A função predefinida é um documento XSL que converte o documento de entrada de script em um documento de comando do BHOLD.

Processamento de script BHOLD

Os comandos são executados na mesma ordem que no documento. Se uma função falhar, todos os comandos executados serão revertidos.

Objeto Script

Esta seção descreve como usar o objeto script.

Recuperar informações do BHOLD

A função GetInfo é usada para recuperar informações dos dados disponíveis no sistema de autorização do BHOLD. A função requer um nome de função e, eventualmente, um ou mais parâmetros. Se essa função for bem-sucedida, um objeto ou coleção BHOLD será retornado na forma de um documento XML.

Se a função não for bem-sucedida, a função GetInfo retornará uma cadeia de caracteres vazia ou um erro. A descrição do erro e o número podem ser usados para obter mais informações sobre a falha.

A função GetInfo 'FunctionDispatch' pode ser usada para recuperar informações de um aplicativo controlado pelo sistema BHOLD. Essa função requer três parâmetros: a ID do aplicativo, a função de expedição como ela é definida na ASI e um documento XML com informações de suporte para o ASI. Se a função for bem-sucedida, o resultado estará disponível no formato XML no objeto de resultado.

O snippet abaixo é um exemplo simples de C# de GetInfo:

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

Da mesma forma, o objeto BScript também pode ser acessado por meio do serviço b1scriptserviceWeb . Isso é feito adicionando uma referência da Web ao projeto usando http://< server>:5151/BHOLD/Core/b1scriptservice.asmx, em <que o servidor> é o servidor com os binários BHOLD instalados. Para obter mais informações, consulte Adicionar uma referência de serviço Web a um projeto do Visual Studio.

O exemplo a seguir mostra como usar a função GetInfo de um serviço Web. Esse código recupera a Unidade Organizacional que tem uma OrgID de 1 e exibe o nome dessa Unidade Organizacional na tela.

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

        }
    }
}

O exemplo de VBScript a seguir usa o serviço Web via SOAP e usando GetInfo. Para obter exemplos adicionais para SOAP 1.1, SOAP 1.2 e HTTP POST, consulte a seção Referência Gerenciada do BHOLD ou navegue até o serviço Web diretamente de um navegador e exiba-os lá.

Dim SOAPRequest
Dim SOAPParameters
Dim SOAPResponse
Dim xmlhttp

Set xmlhttp = CreateObject("Microsoft.XMLHTTP")

xmlhttp.open "POST", "http://app1.corp.contoso.com:5151/BHOLD/Core/b1scriptservice.asmx", False, "CORP\Administrator", "abc123*2k"

xmlhttp.setRequestHeader "Content-type", "text/xml; charset=utf-8"
xmlhttp.setRequestHeader "SOAPAction", "http://B1/B1ScriptService/GetInfo"

SOAPRequest = "<?xml version='1.0' encoding='utf-8'?> <soap:Envelope" & vbCRLF
SOAPRequest = SOAPRequest & " xmlns:xsi=""http://" & vbCRLF
SOAPRequest = SOAPRequest & " www.w3.org/2001/XMLSchema-instance""" & vbCRLF
SOAPRequest = SOAPRequest & " xmlns:xsd=""http://www.w3.org/2001/XMLSchema""" & vbCRLF
SOAPRequest = SOAPRequest & " xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">" & vbCRLF
SOAPRequest = SOAPRequest & " <soap:Body>" & vbCRLF
SOAPRequest = SOAPRequest & " <GetInfo xmlns=""http://B1/B1ScriptService"">" & vbCRLF
SOAPRequest = SOAPRequest & " <functionName>OrgUnit</functionName>" & vbCRLF
SOAPRequest = SOAPRequest & " <parameter1>1</parameter1>" & vbCRLF
SOAPRequest = SOAPRequest & " <parameter2></parameter2>" & vbCRLF
SOAPRequest = SOAPRequest & " <parameter3></parameter3>" & vbCRLF
SOAPRequest = SOAPRequest & " </GetInfo>" & vbCRLF
SOAPRequest = SOAPRequest & " </soap:Body>" & vbCRLF
SOAPRequest = SOAPRequest & " </soap:Envelope>"
MsgBox SOAPRequest

xmlhttp.send SOAPRequest 

SOAPResponse = xmlhttp.responseText

MsgBox SOAPResponse

Executar scripts

A função ExecuteScript do objeto BScript pode ser usada para executar scripts. Essa função requer dois parâmetros. O primeiro parâmetro é o documento XML que contém as informações personalizadas a serem usadas pelo script. O segundo parâmetro é o nome do script predefinido a ser usado. InIn the BHOLD predefined scripts directory, here should be an XSL document with the same name as the function, but with the .xsl extension.

Se a função não for bem-sucedida, a função ExecuteScript retornará o valor False. A descrição e o número do erro podem ser usados para saber o que deu errado. Veja a seguir um exemplo de como usar o método Web ExecuteXML. Esse 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

Essa função GetInfo está disponível depois que a função executescript é executada. A função retorna uma cadeia de caracteres formatada em XML que contém o relatório de execução completo. O nó Script contém a estrutura XML do script executado.

Para cada função que falha durante a execução do script, uma Função de Nó é adicionada com o Nome dos nós. ExecuteXML e Error é adicionado ao final do documento, todas as IDs geradas são adicionadas.

Observe que somente as funções, que contêm um erro, são adicionadas. Um número de erro '0' significa que a função não é executada.

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

Os parâmetros de ID recebem tratamento especial. Valores não numéricos são usados como valor de pesquisa para localizar as entidades correspondentes no armazenamento de dados do BHOLD. Quando o valor de pesquisa não é exclusivo, a primeira entidade que está em conformidade com o valor de pesquisa é retornada.

Para distinguir valores de pesquisa numérica de IDs, é possível usar um prefixo. Quando os primeiros seis caracteres do valor de pesquisa são iguais a 'no_id:' esses caracteres são removidos antes que o valor seja usado para pesquisa. Caracteres curinga do SQL '%' podem ser usados.

Os seguintes campos são usados com o valor de pesquisa:

Tipo ID Campo de pesquisa
OrgUnitID Descrição
roleID Descrição
Taskid Descrição
userID DefaultAlias

Acesso e permissões de script

O código do lado do servidor nas Páginas do Servidor Ativo é usado para executar os scripts. Portanto, o acesso ao script significa acesso a essas páginas. O sistema BHOLD mantém informações sobre os pontos de entrada das páginas personalizadas. Essas informações incluem a página inicial e a descrição da função (vários idiomas devem ter suporte).

Um usuário está autorizado a inserir as páginas personalizadas e executar um script. Cada ponto de entrada é apresentado como uma tarefa. Cada usuário que ganhou essa tarefa por meio de uma função ou unidade é capaz de executar a função correspondente.

Uma nova função no menu apresenta todas as funções personalizadas que podem ser executadas pelo usuário. Como um script pode executar ações no sistema BHOLD em uma identidade diferente do usuário conectado. É possível conceder permissão para executar uma ação específica sem ter supervisão sobre nenhum objeto. Por exemplo, isso pode ser útil para um funcionário que só tem permissão para inserir novos clientes na empresa. Esses scripts também podem ser usados para criar páginas de auto-registro.

Script de comando

O script de comando contém uma lista de funções executadas pelo sistema BHOLD. A lista é escrita em um documento XML que está em conformidade com as seguintes definições:

Script de comando <functions>functions</functions>
funções função {function}
função <função name="functionName" functionParameters [return] (/> | > parameterList </function>)
functionName Um nome de função válido, conforme descrito nas seções a seguir.
functionParameters { functionParameter }
Functionparameter parameterName = "parameterValue"
parameterName Um nome de parâmetro válido.
Parametervalue @variable@ | Valor
value Um valor de parâmetro válido.
Parameterlist <parâmetros> {parameterItem} </parameters>
parameterItem <parâmetro name="parameterName"> parameterValue </parameter>
return return="@variable@"
variável Um nome de variável personalizado.

O XML tem as seguintes traduções de caracteres especiais:

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

Esses caracteres XML podem ser usados em identificadores, mas não são recomendados.

O código a seguir mostra um exemplo de um documento de comando válido com três funções:

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

A função OrgUnitAdd armazena a ID da unidade criada em uma variável chamada UnitID. Essa variável é usada como entrada para a função UserAdd. O valor retornado dessa função não é usado. As seções a seguir descrevem todas as funções disponíveis, os parâmetros necessários e seus valores retornados.

Executar funções

Esta seção descreve como usar as funções de execução.

ABAAttributeRuleAdd

Crie uma nova regra de atributo em um tipo de atributo específico. As regras de atributo só podem ser vinculadas a um tipo de atributo.

A regra de atributo especificada pode ser vinculada a todos os tipos de atributo possíveis.

O RuleType não pode ser alterado com o comando "ABAattributeruletypeupdate". Requer que a descrição do atributo seja exclusiva.

Argumentos Tipo
Descrição Texto
RuleType Especifique o tipo de regra de atributo. Dependendo do tipo do tipo de regra de atributo, outros argumentos devem ser incluídos. Os seguintes valores de tipo de regra são válidos:
  • 0: Expressão regular (adicionar argumento "value").
  • 1: Valor (adicionar argumentos "operator" e "value").
  • 2: Lista de valores.
  • 3: Intervalo (adicionar argumentos "rangemin" e "rangemax").
  • 4: Idade (adicionar argumentos "operador" e "valor").
InvertResult ["0"|"1"|"N"|"Y"]
AttributeTypeID Texto
Argumentos opcionais Tipo
Operador Texto
Observação: esse argumento será obrigatório se RuleType for 1 ou 4. Os valores possíveis são '=', '<' ou '>'. As marcas XML precisam usar ">" para ">" e "<" para "<".
RangeMin Número
Observação: esse argumento será obrigatório se RuleType for 3.
RangeMax Número
Observação: esse argumento será obrigatório se RuleType for 3.
Valor Texto
Observação: esse argumento será obrigatório se RuleType for 0, 1 ou 4. O argumento deve ser um valor numérico ou alfanumérico.
Tipo de retorno AttributeRuleID Texto

applicationadd

Cria um novo aplicativo e retorna a ID do novo aplicativo.

Argumentos Tipo
descrição
computador
module
parâmetro
protocolo
Nome de Usuário
password
svroleID (opcional) Se esse argumento não estiver presente, uma função de supervisor do usuário atual será usada.
Applicationaliasformula (opcional) A fórmula de alias é usada para criar um alias para um usuário quando ele é atribuído a uma permissão do aplicativo. O alias será criado se o usuário ainda não tiver um alias para esse aplicativo. Se nenhum valor for fornecido, o alias padrão do usuário será usado como alias para o aplicativo. A fórmula é formatada como [<<objecttype>>.<<nameofobjecttypeattribute>>(startindexoffset,length offset)]. O deslocamento é opcional. Somente atributos de Usuário e Aplicativo podem ser usados. O texto livre pode ser usado. Os caracteres reservados são colchete esquerdo ([) e colchete direito (]). Por exemplo: [Application.bholdDescription]\[User.bholdDefAlias(1,5)].
Tipo de retorno ID do novo aplicativo.

AttributeSetValue

Define o valor de um tipo de atributo conectado ao tipo de objeto. Requer que as descrições do tipo de objeto e do tipo de atributo sejam exclusivas.

Argumentos Tipo
ObjectTypeID Texto
ObjectID Texto
AttributeTypeID Texto
Valor Texto
Tipo de retorno Tipo

AttributeTypeAdd

Insere um novo tipo de atributo/tipo de propriedade.

Argumentos Tipo
DataTypeID Texto
Descrição (=Identidade) Texto
Observação: palavras reservadas não podem ser usadas, incluindo 'a', 'frm', 'id', 'usr' e 'bhold'.
MaxLength Número em [1,..,255]
ListOfValues (booliano) ["0"|"1"|"N"|"Y"]
DefaultValue Texto
Tipo de retorno Tipo
AttributeTypeID Texto

AttributeTypeSetAdd

Insere um novo conjunto de tipos de atributo. Requer que a descrição de um conjunto de tipos de atributo seja exclusiva.

Argumentos Tipo
Descrição (=Identidade) Texto
Tipo de retorno Tipo
AttributeTypeSetID Texto

AttributeTypeSetAddAttributeType

Insere um novo tipo de atributo em um conjunto de tipos de atributo existente. Requer que as descrições do tipo de atributo definido e do tipo de atributo sejam exclusivas.

Argumentos Tipo
AttributeTypeSetID Texto
AttributeTypeID Texto
Ordem Número
LocationID Texto
Observação: o local é "grupo" ou "único".
Obrigatório ["0"|"1"|"N"|"Y"]
Tipo de retorno Tipo

ObjectTypeAddAttributeTypeSet

Adiciona um tipo de atributo definido a um tipo de objeto. Requer que a descrição do tipo de objeto e o conjunto de tipos de atributo sejam exclusivos. Os tipos de objeto são: System, OrgUnit, User, Task.

Argumentos Tipo
ObjectTypeID Texto
AttributeTypeSetID Texto
Ordem Número
Visible
  • 0: o conjunto de tipos de atributo está visível.
  • 2: o conjunto de tipos de atributo fica visível quando o botão mais informações é selecionado.
  • 1: o conjunto de tipos de atributo é invisível.
Tipo de retorno Tipo

OrgUnitadd

Cria uma nova unidade organizacional e retorna a ID da nova unidade organizacional.

Argumentos Tipo
descrição
orgtypeID
parentID
OrgUnitinheritedroles (opcional)
Tipo de retorno Tipo
ID da nova unidade O parâmetro OrgUnitinheritedroles
tem o valor sim ou não.

OrgUnitaddsupervisor

Torne um usuário um supervisor de uma unidade organizacional.

Argumentos Tipo
svroleID O argumento userID também pode ser usado. Nesse caso, a função de supervisor padrão é selecionada. Uma função de supervisor padrão tem um nome como __svrole seguido por um número. O argumento userID pode ser usado para compatibilidade com versões anteriores.
OrgUnitID

OrgUnitadduser

Torne um usuário membro de uma unidade organizacional.

Argumentos Tipo
userID
OrgUnitID

OrgUnitdelete

Remove uma unidade organizacional.

Argumentos Tipo
OrgUnitID

OrgUnitdeleteuser

Remove um usuário como membro de uma unidade organizacional.

Argumentos Tipo
userID
OrgUnitID

roleadd

Cria uma nova função.

Argumentos Tipo
Descrição
svrole
svroleID (opcional) Se esse argumento não estiver presente, uma função de supervisor do usuário atual será usada.
ContextAdaptable (opcional) ["0","1","N","Y"]
MaxPermissions (opcional) Integer
MaxRoles (opcional) Integer
MaxUsers (opcional) Integer
Tipo de retorno Tipo
ID da nova função

roleaddOrgUnit

Atribui uma função a uma unidade organizacional.

Argumentos Tipo
OrgUnitID roleID
inheritThisRole 'true' ou 'false', indica se a função é proposta para unidades subjacentes.

roleaddrole

Atribui uma função como um subrole de outra função.

Argumentos Tipo
roleID
subRoleID

roleaddsupervisor

Torne um usuário um supervisor de uma função.

Argumentos Tipo
svroleID O argumento userID também pode ser usado. Nesse caso, a função de supervisor padrão é selecionada. Uma função de supervisor padrão tem um nome como __svrole seguido por um número. O argumento userID pode ser usado para compatibilidade com versões anteriores.
roleID

roleadduser

Atribui uma função a um usuário. A função não pode ser uma função adaptável de contexto quando nenhuma contextID é fornecida.

Argumentos Tipo
userID
roleID
durationType (opcional) Pode conter os valores 'free', 'hours' e 'days'.
durationLength (opcional) Obrigatório quando durationType é 'hours' ou 'days'. deve conter o valor inteiro para o número de horas ou dias que a função é atribuída a um usuário.
iniciar (opcional) Data e hora em que a função é atribuída. Quando esse atributo é omitido, a função é atribuída imediatamente. O formato de data é 'YYYY-MM-DDThh:nn:ss", em que somente ano, mês e dia são necessários. por exemplo, "2004-12-11" e "2004-11-28T08:00" são valores válidos.
end (opcional) Data e hora em que a função é revogada. Quando durationType e durationLength são fornecidos, esse valor é ignorado. O formato de data é 'YYYY-MM-DDThh:nn:ss", em que somente ano, mês e dia são necessários. por exemplo, "2004-12-11" e "2004-11-28T08:00" são valores válidos.
linkreason Necessário quando iniciar, terminar ou duração for dado, caso contrário, ignorado.
contextId (opcional) ID da unidade organizacional, necessária apenas para funções adaptáveis de contexto.

roledelete

Exclui uma função.

Argumentos Tipo
roleID

roledeleteuser

Remove a atribuição de função para um usuário. As funções herdadas pelo usuário são revogadas por esse comando.

Argumentos Tipo
userID
roleID
contextID (opcional)

roleproposeOrgUnit

Propõe uma função para atribuí-la aos membros e às sub-OrgUnits de um OrgUnit.

Argumentos Tipo
OrgUnitID
roleID
durationType (opcional) Pode conter valores 'free', 'hours' e 'days'.
durationLength Necessário quando durationType for 'hours' ou 'days', deve conter o valor inteiro para o número de horas ou dias que a função é atribuída a um usuário.
durationFixed 'true' ou 'false', indica se a atribuição dessa função a um usuário deve ser igual a durationLength.
inheritThisRole 'true' ou 'false', indica se a função é proposta para unidades subjacentes.

taskadd

Cria uma nova tarefa e retorna a ID da nova tarefa.

Argumentos Tipo
Applicationid
descrição Texto com no máximo 254 caracteres.
Taskname Texto com no máximo 254 caracteres.
tokenGroupID
svroleID (opcional) Se esse argumento não estiver presente, uma função de supervisor do usuário atual será usada.
contextAdaptable (opcional) ["0","1","N","Y"]
underconstruction (opcional) ["0","1","N","Y"]
auditaction (opcional)
  • 0: Desconhecido (padrão)
  • 1: ReportOnly
  • 2: AlertAppAll
  • 3: AlertAppObsolete
  • 4: AlertAppMissing
  • 5: EnforceAppAll
  • 6: EnforceAppObsolete
  • 7: EnforceAppMissing
  • 8: AlertEnforceAppAll
  • 9: AlertEnforceAppObsolete
  • 10: AlertEnforceAppMissing
  • 11: ImportAll
auditalertmail (opcional) O endereço de email para os alertas sobre essa permissão são enviados pelo auditor. Se esse argumento não estiver presente, o endereço de email de alerta do auditor será usado.
MaxRoles (opcional) Integer
MaxUsers (opcional) Integer
Tipo de retorno ID da nova tarefa.

taskadditask

Indique que duas tarefas são incompatíveis.

Argumentos Tipo
Taskid
taskID2

taskaddrole

Atribui uma tarefa a uma função.

Argumentos Tipo
roleID
Taskid

taskaddsupervisor

Torne um usuário um supervisor de uma tarefa.

Argumentos Tipo
svroleID O argumento userID também pode ser usado. Nesse caso, a função de supervisor padrão é selecionada. Uma função de supervisor padrão tem um nome como __svrole seguido por um número. O argumento userID pode ser usado para compatibilidade com versões anteriores.
Taskid

Useradd

Cria um novo usuário e retorna a ID do novo usuário.

Argumentos Tipo
descrição
alias
Languageid
  • 1: Inglês
  • 2: Holandês
OrgUnitID
enddate (opcional) O formato de data é 'YYYY-MM-DDThh:nn:ss", em que somente ano, mês e dia são necessários. por exemplo, "2004-12-11" e "2004-11-28T08:00" são valores válidos.
desabilitado (opcional)
  • 0: Habilitado
  • 1: Desabilitado
MaxPermissions (opcional) Integer
MaxRoles (opcional) Integer
Tipo de retorno ID do novo usuário.

UserAddRole

Adiciona uma função de usuário.

Argumentos Tipo

UserDeleteRole

Exclui uma função de usuário.

Argumentos Tipo

Userupdate

Atualiza um usuário.

Argumentos Tipo
UserID
description (opcional)
Linguagem
  • 1: inglês
  • 2: Holandês
userDisabled (opcional)
  • 0: Habilitado
  • 1: Desabilitado
UserEndDate (opcional) O formato de data é 'AAAA-MM-DDThh:nn:ss", em que somente ano, mês e dia são necessários. por exemplo, "2004-12-11" e "2004-11-28T08:00" são valores válidos.
firstName (opcional)
middleName (opcional)
lastName (opcional)
maxPermissions (opcional) Integer
maxRoles (opcional) Integer

Funções GetInfo

O conjunto de funções descrito nesta seção pode ser usado para recuperar informações armazenadas no sistema BHOLD. Cada função pode ser chamada usando a função GetInfo do objeto BScript. Alguns objetos exigem parâmetros. Os dados retornados estão sujeitos às permissões de exibição e aos objetos supervisionados do usuário conectado.

Argumentos GetInfo

Nome Descrição
de dimensionamento da Web Retorna uma lista de aplicativos.
attributetypes Retorna uma lista de tipos de atributo.
orgtypes Retorna uma lista de tipos de unidade organizacional.
OrgUnits Retorna uma lista de unidades organizacionais sem os atributos das unidades organizacionais.
OrgUnitproposedroles Retorna uma lista de funções propostas vinculadas à unidade organizacional.
OrgUnitroles Retorna uma lista de funções diretamente vinculadas da unidade organizacional fornecida
Objecttypeattributetypes
permissões
permissionusers
funções Retorna uma lista de funções.
roletasks Retorna uma lista de tarefas da função fornecida.
tarefas Retorna todas as tarefas conhecidas pelo BHOLD.
users Retorna uma lista de usuários.
usersroles Retorna a lista de funções de supervisor vinculadas do usuário determinado.
userpermissions Retorna a lista de permissões do usuário especificado.

Informações do OrgUnit

Nome Parâmetros Tipo de retorno
OrgUnit OrgUnitID OrgUnit
OrgUnitasiattributes OrgUnitID Coleção
OrgUnits filter (opcional), proptypeid (opcional)
Pesquisa unidades que contêm a cadeia de caracteres descrita no filtro no proptype descrito em proptypeid. Se essa ID for omitida, o filtro se aplicará à descrição da unidade. Se nenhum filtro for fornecido, todas as unidades visíveis serão retornadas.
Coleção
OrgUnitOrgUnits OrgUnitID Coleção
OrgUnitparents OrgUnitID Coleção
OrgUnitpropertyvalues OrgUnitID Coleção
OrgUnitproptypes Coleção
OrgUnitusers OrgUnitID Coleção
OrgUnitproposedroles OrgUnitID Coleção
OrgUnitroles OrgUnitID Coleção
OrgUnitinheritedroles OrgUnitID Coleção
OrgUnitsupervisors OrgUnitID Coleção
OrgUnitinheritedsupervisors OrgUnitID Coleção
OrgUnitsupervisorroles OrgUnitID Coleção

Informações de função

Nome Parâmetros Tipo de retorno
função roleID Objeto
funções filter (opcional) Coleção
roleasiattributes roleID Coleção
roleOrgUnits roleID Coleção
roleparentroles roleID Coleção
rolesubroles roleID Coleção
rolesupervisors roleID Coleção
rolesupervisorroles roleID Coleção
roletasks roleID Coleção
roleusers roleID Coleção
rolesupervisorroles roleID Coleção
proposedroleOrgUnits roleID Coleção
proposedroleusers roleID Coleção

Permissão – Informações da tarefa

Nome Parâmetros Tipo de retorno
permissão TaskID Permissão
permissões filter (opcional) Coleção
permissionasiattributes TaskID Coleção
permissionattachments TaskID Coleção
permissionattributetypes - Coleção
permissionparams TaskID Coleção
permissionroles TaskID Coleção
permissionsupervisors TaskID Coleção
permissionsupervisorroles TaskID Coleção
permissionusers TaskID Coleção
task TaskID Tarefa
tarefas filter (opcional) Coleção
taskattachments TaskID Coleção
quadros de tarefas TaskID Coleção
taskroles TaskID Coleção
tasksupervisors TaskID Coleção
tasksupervisorroles TaskID Coleção
taskusers TaskID Coleção

Informações do usuário

Nome Parâmetros Tipo de retorno
usuário UserID Usuário
users filter (opcional), attributetypeid (opcional)
Pesquisa usuários que contêm no tipo de atributo especificado por attributetypeid a cadeia de caracteres especificada pelo filtro. Se essa ID for omitida, o filtro se aplicará ao alias padrão do usuário. Se nenhum filtro for fornecido, todos os usuários visíveis serão retornados. Por exemplo:
  • GetInfo("users") retorna todos os usuários.
  • GetInfo("users", "%dmin%") retorna todos os usuários com a cadeia de caracteres "dmin" no alias padrão.
  • Suponha que os usuários tenham um atributo extra chamado "City".GetInfo("users", "%msterda%", "City"). Essa chamada retorna todos os usuários que têm a cadeia de caracteres "msterda" no atributo Cidade.
Usercollection
usersapplications UserID Coleção
Userpermissions UserID Coleção
userroles UserID Coleção
usersroles UserID Coleção
userstasks UserID Coleção
usersunits UserID Coleção
usertasks UserID Coleção
userunits UserID Coleção

Tipos de retorno

Nesta seção, os tipos de retorno da função GetInfo são descritos.

Nome Tipo de retorno
Coleção =<ITEMS>{<ITEM description="..." id="..." />}</ITEMS>
Objeto =<ITEM type="…" description="..." />
OrgUnit = <ITEM id="…" description="..." orgtype="..." parent="..."> <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>
Permissão = <ITEM id="…" description="…" name="…" tokengroup="…" application="…" > <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>
Funções = <ITEMS> {<ITEM id="…" description="…" />} </ITEMS>
Função = <ITEM id="…" description="… " > <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>
Tarefa Consulte Permissão
Usuários = <ITEMS> {<ITEM description="…" id="…" alias="…" />} </ITEMS>
Usuário = <ITEM id="…" description="…" alias="…" firstname="…" lastname="…" uuid="…" language="…"> <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>

Exemplo de script

Uma empresa tem um servidor BHOLD e deseja um script automatizado que crie novos clientes. As informações sobre a empresa e seu gerente de compras entram em uma página da Web personalizada. Cada cliente é apresentado no modelo como uma unidade nos clientes da unidade. O gerente de compras também é membro como supervisor desta unidade. Uma função é criada que dá aos proprietários o direito de comprar em nome do novo cliente.

No entanto, esse cliente não existe no aplicativo. Há uma função especial implementada no ASI FunctionDispatch que cria uma nova conta de cliente no aplicativo de compra. Cada cliente tem um tipo de cliente.

Os tipos possíveis também podem ser apresentados pela função FunctionDispatch. O AA escolhe o tipo correto para o novo cliente.

Crie uma função e uma tarefa para apresentar os privilégios de compra. O privilégio de compra real é apresentado pelo ASI como um arquivo /customers/customer id/purchase. Esse arquivo deve estar vinculado à nova tarefa.

A Página do Servidor Ativo que coleta as informações tem esta aparência:

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

Tudo o que as páginas personalizadas teriam que fazer é solicitar as informações certas e criar um documento XML com as informações solicitadas. Neste exemplo, a página MySubmit transforma os dados no documento XML, atribuindo-os ao b1script. Objeto Parameters e, por fim, chama a b1script.ExecuteScript("MyScript") função .

O script de entrada a seguir mostra este exemplo:

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

Esse script de entrada não contém comandos para BHOLD. Isso ocorre porque esse script não é executado diretamente pelo BHOLD; em vez disso, essa é a entrada para uma função predefinida. Essa função predefinida converte esse objeto em um documento XML com comandos BHOLD. Esse mecanismo impede que o usuário envie scripts para o sistema BHOLD que contêm funções que o usuário não tem permissão para executar, como setUser e dispatches de função para uma 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>

Próximas etapas