Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Модуль BHOLD-core может обрабатывать команды скриптов. Это можно сделать напрямую с помощью bscript.dll в проекте .NET. Кроме того, взаимодействие с интерфейсом b1scriptservice.asmx веб-службы.
Перед выполнением скрипта все сведения внутри скрипта должны быть собраны для создания этого скрипта. Эти сведения можно собрать из следующих источников:
- Входные данные пользователя
- Данные BHOLD
- Приложения
- Другие
Данные BHOLD можно получить с помощью функции GetInfo объекта скрипта. Существует полный список команд, которые могут представлять все данные, хранящиеся в базе данных BHOLD. Однако представленные данные подлежат разрешениям на просмотр пользователя, вошедшего в систему. Результатом является форма XML-документа, который можно проанализировать.
Другой источник информации может быть одним из приложений, контролируемых BHOLD. Оснастка приложения имеет специальную функцию FunctionDispatch, которая может использоваться для представления сведений, относящихся к приложению. Это также представлено в виде XML-документа.
Наконец, если нет другого способа, скрипт может содержать команды непосредственно в других приложениях или системах. NoThenstallation дополнительного программного обеспечения на сервере BHOLD может подорвать безопасность всей системы.
Все эти сведения помещается в один XML-документ и назначается объекту скрипта BHOLD. Объект объединяет этот документ с предварительно определенной функцией. Предопределенная функция — это документ XSL, который преобразует входной документ скрипта в документ команды 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 | Персонаж |
|---|---|
& |
& |
< |
< |
> |
> |
" |
" |
' |
' |
Эти 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 | Укажите тип правила атрибута. В зависимости от типа типа правила атрибута необходимо включить другие аргументы. Допустимы следующие значения типов правил:
|
| 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 | Текст |
| Заказ | Число |
| Видимый |
|
| Тип возвращаемого значения | Тип |
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 (необязательно) |
|
| auditalertmail (необязательно) | Адрес электронной почты, на который были оповещения об этом разрешении, отправляются аудитором. Если этот аргумент отсутствует, используется адрес электронной почты оповещения аудитора. |
| MaxRoles (необязательно) | Целое число |
| MaxUsers (необязательно) | Целое число |
| Тип возвращаемого значения | Идентификатор новой задачи. |
taskadditask
Укажите, что две задачи несовместимы.
| Аргументы | Тип |
|---|---|
| taskID | |
| taskID2 |
taskaddrole
Назначает задачу роли.
| Аргументы | Тип |
|---|---|
| roleID | |
| taskID |
taskaddsupervisor
Сделайте пользователя руководителем задачи.
| Аргументы | Тип |
|---|---|
| svroleID | Можно также использовать идентификатор пользователя аргумента. В этом случае выбрана роль руководителя по умолчанию. Роль руководителя по умолчанию имеет имя, например __svrole за которым следует число. Идентификатор пользователя аргумента можно использовать для обратной совместимости. |
| taskID |
useradd
Создает нового пользователя, возвращает идентификатор нового пользователя.
| Аргументы | Тип |
|---|---|
| описание | |
| псевдоним | |
| languageID |
|
| OrgUnitID | |
| enddate (необязательно) | Формат даты — YYYY-MM-DDThh:nn:ss, где требуются только год, месяц и день. Например, "2004-12-11" и "2004-11-28T08:00" являются допустимыми значениями. |
| отключен (необязательно) |
|
| MaxPermissions (необязательно) | Целое число |
| MaxRoles (необязательно) | Целое число |
| Тип возвращаемого значения | Идентификатор нового пользователя. |
UserAddRole
Добавляет роль пользователя.
| Аргументы | Тип |
|---|---|
UserDeleteRole
Удаляет роль пользователя.
| Аргументы | Тип |
|---|---|
Userupdate
Обновляет пользователя.
| Аргументы | Тип |
|---|---|
| UserID | |
| description (необязательно) | |
| язык |
|
| userDisabled (необязательно) |
|
| 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 (необязательно) Выполняет поиск пользователей, содержащихся в типе атрибута, заданном атрибутивным типом, строкой, указанной фильтром. Если этот идентификатор опущен, фильтр применяется к псевдониму пользователя по умолчанию. Если фильтр не указан, возвращаются все видимые пользователи. Рассмотрим пример.
|
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>
Дальнейшие действия
- руководство по концепции BHOLD
- журнал версий BHOLD