Поделиться через


Справочник разработчика BHOLD для Microsoft Identity Manager 2016

Модуль BHOLD-core может обрабатывать команды скриптов. Это можно сделать напрямую с помощью bscript.dll в проекте .NET. Кроме того, взаимодействие с интерфейсом b1scriptservice.asmx веб-службы.

Перед выполнением скрипта все сведения внутри скрипта должны быть собраны для создания этого скрипта. Эти сведения можно собрать из следующих источников:

  • Входные данные пользователя
  • Данные BHOLD
  • Приложения
  • Другие

Данные BHOLD можно получить с помощью функции GetInfo объекта скрипта. Существует полный список команд, которые могут представлять все данные, хранящиеся в базе данных BHOLD. Однако представленные данные подлежат разрешениям на просмотр пользователя, вошедшего в систему. Результатом является форма XML-документа, который можно проанализировать.

Другой источник информации может быть одним из приложений, контролируемых BHOLD. Оснастка приложения имеет специальную функцию FunctionDispatch, которая может использоваться для представления сведений, относящихся к приложению. Это также представлено в виде XML-документа.

Наконец, если нет другого способа, скрипт может содержать команды непосредственно в других приложениях или системах. NoThenstallation дополнительного программного обеспечения на сервере BHOLD может подорвать безопасность всей системы.

Все эти сведения помещается в один XML-документ и назначается объекту скрипта BHOLD. Объект объединяет этот документ с предварительно определенной функцией. Предопределенная функция — это документ XSL, который преобразует входной документ скрипта в документ команды BHOLD.

обработке скриптов BHOLD

Команды выполняются так же, как и в документе. Если одна функция завершается ошибкой, откат выполняются все команды.

Объект Script

В этом разделе описывается использование объекта скрипта.

Получение сведений BHOLD

Функция GetInfo используется для получения информации из доступных данных в системе авторизации BHOLD. Для функции требуется имя функции и в конечном итоге один или несколько параметров. Если эта функция выполнена успешно, объект или коллекция BHOLD возвращается в виде XML-документа.

Если функция не выполнена, функция GetInfo возвращает пустую строку или ошибку. Описание ошибки и число можно использовать для получения дополнительных сведений о сбое.

Функцию GetInfo FunctionDispatch можно использовать для получения информации из приложения, управляемого системой BHOLD. Для этой функции требуются три параметра: идентификатор приложения, функция диспетчера, определяемая в ASI, и XML-документ со вспомогательными сведениями для ASI. Если функция выполнена успешно, результат доступен в формате XML в объекте результата.

Приведенный ниже фрагмент кода является простым примером C# GetInfo:

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

Аналогичным образом объект BScript также можно получить через веб-службу b1scriptservice. Это делается путем добавления веб-ссылки на проект с помощью сервера http://<>:5151/BHOLD/Core/b1scriptservice.asmx, где< сервера >является сервером с установленными двоичными файлами BHOLD. Дополнительные сведения см. в статье Добавление ссылки веб-службы на проект Visual Studio.

В следующем примере показано, как использовать функцию GetInfo из веб-службы. Этот код извлекает подразделение с идентификатором 1, а затем отображает имя этого подразделения на экране.

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

        }
    }
}

В следующем примере VBScript используется веб-служба через SOAP и с помощью GetInfo. Дополнительные примеры для SOAP 1.1, SOAP 1.2 и HTTP POST см. в разделе "Управляемый справочник BHOLD" или вы можете перейти к веб-службе непосредственно из браузера и просмотреть их там.

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

Выполнение скриптов

Функци ю ExecuteScript объекта BScript можно использовать для выполнения скриптов. Для этой функции требуется два параметра. Первым параметром является XML-документ, содержащий пользовательские сведения, используемые скриптом. Второй параметр — это имя предопределенного скрипта, который будет использоваться. В каталоге стандартных скриптов BHOLD здесь должен быть документ XSL с тем же именем, что и функция, но с расширением XSL.

Если функция не выполнена, функция ExecuteScript возвращает значение False. Описание ошибки и число можно использовать для того, чтобы узнать, что пошло не так. Ниже приведен пример использования веб-метода ExecuteXML. Этот метод вызывает 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

Эта функция GetInfo доступна после выполнения функции executescript. Функция возвращает отформатированную XML-строку, содержащую полный отчет о выполнении. Узел скрипта содержит XML-структуру выполняемого скрипта.

Для каждой функции, которая завершается сбоем во время выполнения скрипта, функция узла добавляется с именем узлов. ExecuteXML и Error добавляются в конец документа все созданные идентификаторы.

Обратите внимание, что добавляются только функции, содержащие ошибку. Число ошибок "0" означает, что функция не выполняется.

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

Параметры идентификатора

Параметры идентификатора получают специальное лечение. Нечисловые значения используются в качестве значения поиска для поиска соответствующих сущностей в хранилище данных BHOLD. Если значение поиска не является уникальным, возвращается первая сущность, соответствующая значению поиска.

Чтобы отличить числовые значения поиска от идентификаторов, можно использовать префикс. Когда первые шесть символов значения поиска равны "no_id:", эти символы удаляются перед использованием значения для поиска. Можно использовать подстановочные знаки SQL%.

Следующие поля используются со значением поиска:

Тип идентификатора Поле поиска
OrgUnitID Описание
roleID Описание
taskID Описание
userID DefaultAlias

Доступ к скрипту и разрешения

Код на стороне сервера на страницах Active Server используется для выполнения скриптов. Поэтому доступ к скрипту означает доступ к этим страницам. Система BHOLD сохраняет сведения о точках входа пользовательских страниц. Эти сведения включают начальную страницу и описание функции (следует поддерживать несколько языков).

Пользователь может ввести настраиваемые страницы и выполнить скрипт. Каждая точка входа представлена как задача. Каждый пользователь, получивший эту задачу с помощью роли или единицы, может выполнить соответствующую функцию.

Новая функция в меню представляет все пользовательские функции, которые могут выполняться пользователем. Так как скрипт может выполнять действия в системе BHOLD под удостоверением, отличным от пользователя, вошедшего в систему. Можно предоставить разрешение на выполнение одного конкретного действия без контроля над любым объектом. Например, это может быть полезно для сотрудника, которому разрешено вводить новых клиентов в компанию. Эти скрипты также можно использовать для создания саморегистрирующихся страниц.

Скрипт команд

Скрипт команды содержит список функций, выполняемых системой BHOLD. Список написан в XML-документе, который соответствует следующим определениям:

Скрипт команд <functions>functions</functions>
functions функция {function}
функция <имя функции="functionName" functionParameters [return] (/> | > parameterList </ function>)
functionName Допустимое имя функции, как описано в следующих разделах.
functionParameters { functionParameter }
functionParameter parameterName = "parameterValue"
parameterName Допустимое имя параметра.
parameterValue @variable@ | ценность
ценность Допустимое значение параметра.
parameterList <параметры> {parameterItem} </parameters>
parameterItem <name="parameterName"> parameterValue </parameter>
Ввод return="@variable@"
переменная Имя пользовательской переменной.

XML имеет следующие переводы специальных символов:

XML Персонаж
&amp; &
&lt; <
&gt; >
&quot; "
&apos; '

Эти XML-символы можно использовать в идентификаторах, но они не рекомендуется.

В следующем коде показан пример допустимого документа команды с тремя функциями:

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

Функция OrgUnitAdd сохраняет идентификатор созданной единицы в переменной с именем UnitID. Эта переменная используется в качестве входных данных для функции UserAdd. Возвращаемое значение этой функции не используется. В следующих разделах описываются все доступные функции, необходимые параметры и их возвращаемые значения.

Выполнение функций

В этом разделе описывается, как использовать функции выполнения.

ABAAttributeRuleAdd

Создайте новое правило атрибута для определенного типа атрибута. Правила атрибутов могут быть связаны только с одним типом атрибута.

Указанное правило атрибута можно связать со всеми возможными типами атрибутов.

Параметр RuleType нельзя изменить с помощью команды ABAattributeruletypeupdate. Требуется, чтобы описание атрибута было уникальным.

Аргументы Тип
Описание Текст
RuleType Укажите тип правила атрибута. В зависимости от типа типа правила атрибута необходимо включить другие аргументы. Допустимы следующие значения типов правил:
  • 0: регулярное выражение (добавление аргумента "value").
  • 1. Значение (добавьте аргументы "оператор" и "значение").
  • 2. Список значений.
  • 3. Диапазон (добавьте аргументы rangemin и rangemax).
  • 4. Возраст (добавьте аргументы "оператор" и "значение").
InvertResult ["0"|"1"|"N"|"Y"]
AttributeTypeID Текст
Необязательные аргументы Тип
Оператор Текст
Примечание. Этот аргумент является обязательным, если RuleType равно 1 или 4. Возможные значения : "=", "<" или ">". Xml-теги должны использовать ">" для ">" и "<" для "<".
RangeMin Число
примечание. Этот аргумент является обязательным, если RuleType равно 3.
РейнджМакс Число
примечание. Этот аргумент является обязательным, если RuleType равно 3.
Ценность Текст
примечание. Этот аргумент является обязательным, если RuleType равно 0, 1 или 4. Аргумент должен быть числовым или буквенно-цифровым значением.
Возвращаемый тип AttributeRuleID Текст

applicationadd

Создает новое приложение, возвращает идентификатор нового приложения.

Аргументы Тип
описание
машина
модуль
параметр
протокол
имя пользователя
пароль
svroleID (необязательно) Если этот аргумент отсутствует, используется роль руководителя текущего пользователя.
Applicationaliasformula (необязательно) Формула псевдонима используется для создания псевдонима для пользователя при назначении разрешения приложения. Псевдоним создается, если пользователь еще не имеет псевдонима для этого приложения. Если псевдоним пользователя по умолчанию не задан, он используется в качестве псевдонима для приложения. Формула форматируется как [<<objecttype>>.<<nameofobjecttypeattribute>>(startindexoffset,length offset)]. Смещение является необязательным. Можно использовать только атрибуты пользователей и приложений. Можно использовать бесплатный текст. Зарезервированные символы являются левой квадратной скобкой ([) и правой квадратной скобкой (]). Например: [Application.bholdDescription]\[User.bholdDefAlias(1,5)].
Возвращаемый тип Идентификатор нового приложения.

AttributeSetValue

Задает значение типа атрибута, подключенного к типу объекта. Требует, чтобы описания типа объекта и типа атрибута были уникальными.

Аргументы Тип
ObjectTypeID Текст
ИдентификаторОбъекта Текст
AttributeTypeID Текст
Ценность Текст
Тип возвращаемого значения Тип

AttributeTypeAdd

Вставляет новый тип атрибута / тип свойства.

Аргументы Тип
DataTypeID Текст
Описание (=identity) Текст
Примечание: зарезервированные слова нельзя использовать, включая "a", "frm", "id", "usr" и "bhold".
MaxLength Число в [1,..,255]
ListOfValues (логическое значение) ["0"|"1"|"N"|"Y"]
DefaultValue Текст
Тип возвращаемого значения Тип
AttributeTypeID Текст

AttributeTypeSetAdd

Вставляет новый набор типов атрибутов. Требует, чтобы описание набора типов атрибутов было уникальным.

Аргументы Тип
Описание (=identity) Текст
Тип возвращаемого значения Тип
AttributeTypeSetID Текст

AttributeTypeSetAddAttributeType

Вставляет новый тип атрибута в существующий набор типов атрибутов. Требует, чтобы описания набора типов атрибутов и типа атрибутов были уникальными.

Аргументы Тип
AttributeTypeSetID Текст
AttributeTypeID Текст
Заказ Число
LocationID Текст
Примечание: расположение — "группа" или "один".
Обязательно ["0"|"1"|"N"|"Y"]
Тип возвращаемого значения Тип

ObjectTypeAddAttributeTypeSet

Добавляет тип атрибута, заданный в тип объекта. Требует, чтобы описание типа объекта и набора типов атрибутов было уникальным. Типы объектов: System, OrgUnit, User, Task.

Аргументы Тип
ObjectTypeID Текст
AttributeTypeSetID Текст
Заказ Число
Видимый
  • 0. Набор типов атрибутов отображается.
  • 2. Набор типов атрибутов отображается при выборе кнопки дополнительных сведений.
  • 1. Набор типов атрибутов невидим.
Тип возвращаемого значения Тип

OrgUnitadd

Создает новое подразделение, возвращает идентификатор нового подразделения.

Аргументы Тип
описание
orgtypeID
parentID
OrgUnitinheritedroles (необязательно)
Тип возвращаемого значения Тип
Идентификатор нового урока Параметр OrgUnitinheritedroles
имеет значение "да" или "нет".

OrgUnitaddsupervisor

Сделайте пользователя руководителем подразделения.

Аргументы Тип
svroleID Можно также использовать идентификатор пользователя аргумента. В этом случае выбрана роль руководителя по умолчанию. Роль руководителя по умолчанию имеет имя, например __svrole за которым следует число. Идентификатор пользователя аргумента можно использовать для обратной совместимости.
OrgUnitID

OrgUnitadduser

Сделайте пользователя членом подразделения.

Аргументы Тип
userID
OrgUnitID

OrgUnitdelete

Удаляет подразделение.

Аргументы Тип
OrgUnitID

OrgUnitdeleteuser

Удаляет пользователя в качестве члена подразделения.

Аргументы Тип
userID
OrgUnitID

roleadd

Создает новую роль.

Аргументы Тип
Описание
svrole
svroleID (необязательно) Если этот аргумент отсутствует, используется роль руководителя текущего пользователя.
ContextAdaptable (необязательно) ["0","1","N","Y"]
MaxPermissions (необязательно) Целое число
MaxRoles (необязательно) Целое число
MaxUsers (необязательно) Целое число
Тип возвращаемого значения Тип
Идентификатор новой роли

roleaddOrgUnit

Назначает роль подразделению.

Аргументы Тип
OrgUnitID roleID
наследованиеThisRole Значение true или false указывает, предлагается ли роль базовым единицам.

roleaddrole

Назначает роль как вложенный элемент другой роли.

Аргументы Тип
roleID
subRoleID

roleaddsupervisor

Сделайте пользователя руководителем роли.

Аргументы Тип
svroleID Можно также использовать идентификатор пользователя аргумента. В этом случае выбрана роль руководителя по умолчанию. Роль руководителя по умолчанию имеет имя, например __svrole за которым следует число. Идентификатор пользователя аргумента можно использовать для обратной совместимости.
roleID

roleadduser

Назначает роль пользователю. Роль не может быть адаптируемой к контексту ролью, если не задано идентификатор контекста.

Аргументы Тип
userID
roleID
durationType (необязательно) Может содержать значения "бесплатный", "часы" и "days".
durationLength (необязательно) Требуется, если значение durationType — "часы" или "days". должен содержать целочисленное значение для количества часов или дней назначения роли пользователю.
start (необязательно) Дата и время назначения роли. Если этот атрибут опущен, роль назначается немедленно. Формат даты — YYYY-MM-DDThh:nn:ss, где требуются только год, месяц и день. Например, "2004-12-11" и "2004-11-28T08:00" являются допустимыми значениями.
end (необязательно) Дата и время отзыва роли. Если задано значение durationType и durationLength, это значение игнорируется. Формат даты — YYYY-MM-DDThh:nn:ss, где требуются только год, месяц и день. Например, "2004-12-11" и "2004-11-28T08:00" являются допустимыми значениями.
linkreason Требуется, если задано время начала, окончания или длительности, в противном случае игнорируется.
contextId (необязательно) Идентификатор подразделения, необходимый только для адаптируемых контекстом ролей.

roledelete

Удаляет роль.

Аргументы Тип
roleID

roledeleteuser

Удаляет назначение ролей пользователю. Унаследованные роли пользователем отзываются этой командой.

Аргументы Тип
userID
roleID
contextID (необязательно)

roleproposeOrgUnit

Предлагает роль, чтобы назначить ее членам и вложенным orgUnits объекта OrgUnit.

Аргументы Тип
OrgUnitID
roleID
durationType (необязательно) Может содержать значения "free", "hours" и "days".
durationLength Требуется, если значение durationType равно "часы" или "days", должно содержать целочисленное значение для количества часов или дней назначения роли пользователю.
durationFixed Значение true или false указывает, должно ли назначение этой роли пользователю равно длительностиLength.
наследованиеThisRole Значение true или false указывает, предлагается ли роль базовым единицам.

taskadd

Создает новую задачу, возвращает идентификатор новой задачи.

Аргументы Тип
applicationID
описание Текст с не более чем 254 символами.
имя задачи Текст с не более чем 254 символами.
tokenGroupID
svroleID (необязательно) Если этот аргумент отсутствует, используется роль руководителя текущего пользователя.
contextAdaptable (необязательно) ["0","1","N","Y"]
недострукция (необязательно) ["0","1","N","Y"]
auditaction (необязательно)
  • 0: Неизвестно (по умолчанию)
  • 1. ReportOnly
  • 2. AlertAppAll
  • 3. AlertAppObsolete
  • 4. AlertAppMissing
  • 5. Принудительное применениеAppAll
  • 6. Принудительное применениеAppObsolete
  • 7. Принудительное применениеAppMissing
  • 8. AlertEnforceAppAll
  • 9. AlertEnforceAppObsolete
  • 10: AlertEnforceAppMissing
  • 11. ImportAll
auditalertmail (необязательно) Адрес электронной почты, на который были оповещения об этом разрешении, отправляются аудитором. Если этот аргумент отсутствует, используется адрес электронной почты оповещения аудитора.
MaxRoles (необязательно) Целое число
MaxUsers (необязательно) Целое число
Тип возвращаемого значения Идентификатор новой задачи.

taskadditask

Укажите, что две задачи несовместимы.

Аргументы Тип
taskID
taskID2

taskaddrole

Назначает задачу роли.

Аргументы Тип
roleID
taskID

taskaddsupervisor

Сделайте пользователя руководителем задачи.

Аргументы Тип
svroleID Можно также использовать идентификатор пользователя аргумента. В этом случае выбрана роль руководителя по умолчанию. Роль руководителя по умолчанию имеет имя, например __svrole за которым следует число. Идентификатор пользователя аргумента можно использовать для обратной совместимости.
taskID

useradd

Создает нового пользователя, возвращает идентификатор нового пользователя.

Аргументы Тип
описание
псевдоним
languageID
  • 1: английский
  • 2: голландский
OrgUnitID
enddate (необязательно) Формат даты — YYYY-MM-DDThh:nn:ss, где требуются только год, месяц и день. Например, "2004-12-11" и "2004-11-28T08:00" являются допустимыми значениями.
отключен (необязательно)
  • 0: включено
  • 1. Отключено
MaxPermissions (необязательно) Целое число
MaxRoles (необязательно) Целое число
Тип возвращаемого значения Идентификатор нового пользователя.

UserAddRole

Добавляет роль пользователя.

Аргументы Тип

UserDeleteRole

Удаляет роль пользователя.

Аргументы Тип

Userupdate

Обновляет пользователя.

Аргументы Тип
UserID
description (необязательно)
язык
  • 1: английский
  • 2: голландский
userDisabled (необязательно)
  • 0: включено
  • 1. Отключено
UserEndDate (необязательно) Формат даты — YYYY-MM-DDThh:nn:ss, где требуются только год, месяц и день. Например, "2004-12-11" и "2004-11-28T08:00" являются допустимыми значениями.
firstName (необязательно)
middleName (необязательно)
lastName (необязательно)
maxPermissions (необязательно) Целое число
maxRoles (необязательно) Целое число

Функции GetInfo

Набор функций, описанных в этом разделе, можно использовать для получения сведений, хранящихся в системе BHOLD. Каждая функция может вызываться с помощью функции GetInfo из объекта BScript. Для некоторых объектов требуются параметры. Возвращенные данные подвергаются разрешениям представления и защищенным объектам пользователя, вошедшего в систему.

Аргументы GetInfo

Имя Описание
Приложения Возвращает список приложений.
атрибуты Возвращает список типов атрибутов.
orgtypes Возвращает список типов подразделений.
OrgUnits Возвращает список подразделений без атрибутов подразделений.
OrgUnitproposedroles Возвращает список предлагаемых ролей, связанных с подразделением.
OrgUnitroles Возвращает список прямых связанных ролей заданного подразделения.
Objecttypeattributetypes
Разрешения
разрешения
Роли Возвращает список ролей.
roletasks Возвращает список задач заданной роли.
Задачи Возвращает все задачи, известные BHOLD.
пользователей Возвращает список пользователей.
usersroles Возвращает список связанных ролей руководителя данного пользователя.
userpermissions Возвращает список разрешений данного пользователя.

Сведения о orgUnit

Имя Параметры Тип возвращаемого значения
OrgUnit OrgUnitID OrgUnit
OrgUnitasiattributes OrgUnitID Коллекция
OrgUnits filter (необязательно), proptypeid (необязательно)
Выполняет поиск единиц, содержащих строку, описанную в фильтре в proptype, описанном в . Если этот идентификатор опущен, фильтр применяется к описанию единицы. Если фильтр не указан, возвращаются все видимые единицы.
Коллекция
OrgUnitOrgUnits OrgUnitID Коллекция
OrgUnitparents OrgUnitID Коллекция
OrgUnitpropertyvalues OrgUnitID Коллекция
OrgUnitproptypes Коллекция
OrgUnitusers OrgUnitID Коллекция
OrgUnitproposedroles OrgUnitID Коллекция
OrgUnitroles OrgUnitID Коллекция
OrgUnitinheritedroles OrgUnitID Коллекция
OrgUnitsupervisors OrgUnitID Коллекция
OrgUnitinheritedsupervisors OrgUnitID Коллекция
OrgUnitsupervisorroles OrgUnitID Коллекция

Сведения о роли

Имя Параметры Тип возвращаемого значения
роль roleID Объект
Роли фильтр (необязательно) Коллекция
roleasiattributes roleID Коллекция
roleOrgUnits roleID Коллекция
roleparentroles roleID Коллекция
rolesubroles roleID Коллекция
roleupervisors roleID Коллекция
roleupervisorroles roleID Коллекция
roletasks roleID Коллекция
roleusers roleID Коллекция
roleupervisorroles roleID Коллекция
proposedroleOrgUnits roleID Коллекция
предлагаемый планировщиков roleID Коллекция

Разрешение — сведения о задаче

Имя Параметры Тип возвращаемого значения
разрешение TaskID Разрешение
Разрешения фильтр (необязательно) Коллекция
permissionasiattributes TaskID Коллекция
разрешения для кэширования TaskID Коллекция
permissionattributetypes - Коллекция
permissionparams TaskID Коллекция
permissionroles TaskID Коллекция
разрешенияsupervisors TaskID Коллекция
permissionsupervisorroles TaskID Коллекция
разрешения TaskID Коллекция
SqlAzureDacpacDeployment TaskID Задача
Задачи фильтр (необязательно) Коллекция
задачи TaskID Коллекция
taskparams TaskID Коллекция
taskroles TaskID Коллекция
tasksupervisors TaskID Коллекция
tasksupervisorroles TaskID Коллекция
taskusers TaskID Коллекция

Сведения о пользователе

Имя Параметры Тип возвращаемого значения
Пользователь UserID Пользователь
пользователей filter (необязательно), attributetypeid (необязательно)
Выполняет поиск пользователей, содержащихся в типе атрибута, заданном атрибутивным типом, строкой, указанной фильтром. Если этот идентификатор опущен, фильтр применяется к псевдониму пользователя по умолчанию. Если фильтр не указан, возвращаются все видимые пользователи. Рассмотрим пример.
  • GetInfo("users") возвращает всех пользователей.
  • GetInfo("users", "%dmin%") возвращает всех пользователей со строкой dmin в псевдониме по умолчанию.
  • Предположим, что у пользователей есть дополнительный атрибут с именем "City".GetInfo("users", "%msterda%", "City"). Этот вызов возвращает все пользователи, имеющие строку "msterda" в атрибуте City.
UserCollection
usersapplications UserID Коллекция
Userpermissions UserID Коллекция
userroles UserID Коллекция
usersroles UserID Коллекция
userstasks UserID Коллекция
usersunits UserID Коллекция
usertasks UserID Коллекция
userunits UserID Коллекция

Типы возвращаемых данных

В этом разделе описаны типы возвращаемых типов функции GetInfo.

Имя Тип возвращаемого значения
Коллекция =<ITEMS>{<ITEM description="..." id="..." />}</ITEMS>
Объект =<ITEM type="…" description="..." />
OrgUnit = <ITEM id="…" description="..." orgtype="..." parent="..."> <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>
Разрешение = <ITEM id="…" description="…" name="…" tokengroup="…" application="…" > <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>
Роли = <ITEMS> {<ITEM id="…" description="…" />} </ITEMS>
Должность = <ITEM id="…" description="… " > <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>
Задача Просмотр разрешений
Пользователи = <ITEMS> {<ITEM description="…" id="…" alias="…" />} </ITEMS>
Пользователь = <ITEM id="…" description="…" alias="…" firstname="…" lastname="…" uuid="…" language="…"> <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>

Пример скрипта

У компании есть сервер BHOLD и требуется автоматизированный скрипт, который создает новых клиентов. Сведения о компании и менеджере по покупке входят на настраиваемую веб-страницу. Каждый клиент представлен в модели как единицу под клиентами единицы. Менеджер по покупкам также является членом в качестве руководителя этого подразделения. Создается роль, которая дает владельцам право приобретать имя нового клиента.

Однако этот клиент не существует в приложении. В asI FunctionDispatch реализована специальная функция, которая создает новую учетную запись клиента в приложении покупки. У каждого клиента есть тип клиента.

Возможные типы также можно представить функцией FunctionDispatch. AA выбирает правильный тип для нового клиента.

Создайте роль и задачу для представления привилегий покупки. Реальная привилегия покупки представлена ASI в виде файла /customers/customer id/purchase. Этот файл должен быть связан с новой задачей.

Страница "Активный сервер", которая собирает сведения, выглядит следующим образом:

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

Все настраиваемые страницы должны выполнять запрос на получение нужных сведений и создание XML-документа с запрошенными сведениями. В этом примере страница MySubmit преобразует данные в XML-документе, назначьте его b1script. Параметры объект и, наконец, вызывает функцию b1script.ExecuteScript("MyScript").

В следующем скрипте ввода показан следующий пример:

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

Этот входной скрипт не содержит никаких команд для BHOLD. Это связано с тем, что этот скрипт не выполняется непосредственно BHOLD; вместо этого это входные данные для предварительно определенной функции. Эта предопределенная функция преобразует этот объект в XML-документ с командами BHOLD. Этот механизм запрещает пользователю отправлять скрипты в систему BHOLD, содержащую функции, которые пользователь не может выполнять, например setUser и диспетчеры функций в 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>

Дальнейшие действия