다음을 통해 공유


Microsoft Identity Manager 2016에 대한 BHOLD 개발자 참조

BHOLD 코어 모듈은 스크립트 명령을 처리할 수 있습니다. .NET 프로젝트의 bscript.dll 직접 사용하여 수행할 수 있습니다. 또한 웹 서비스 b1scriptservice.asmx 인터페이스와 상호 작용합니다.

스크립트가 실행되기 전에 스크립트 내의 모든 정보를 수집하여 이 스크립트를 작성해야 합니다. 이 정보는 다음 원본에서 수집할 수 있습니다.

  • 사용자 입력
  • BHOLD 데이터
  • 애플리케이션
  • 기타

BHOLD 데이터는 스크립트 개체의 GetInfo 함수를 사용하여 검색할 수 있습니다. BHOLD 데이터베이스에 저장된 모든 데이터를 표시할 수 있는 명령의 전체 목록이 있습니다. 그러나 제공된 데이터에는 로그인한 사용자의 보기 권한이 적용됩니다. 결과는 구문 분석할 수 있는 XML 문서의 형식입니다.

정보의 또 다른 소스는 BHOLD에 의해 제어되는 애플리케이션 중 하나일 수 있습니다. 애플리케이션 스냅인에는 애플리케이션 관련 정보를 표시하는 데 사용할 수 있는 FunctionDispatch라는 특수 함수가 있습니다. XML 문서로도 제공됩니다.

마지막으로 다른 방법이 없으면 스크립트에 다른 애플리케이션 또는 시스템에 대한 명령을 직접 포함할 수 있습니다. 아니요BHOLD 서버에서 추가 소프트웨어를 설치하면 전체 시스템의 보안이 저하 될 수 있습니다.

이 모든 정보는 하나의 XML 문서에 배치되고 BHOLD 스크립트 개체에 할당됩니다. 개체는 이 문서를 미리 정의된 함수와 결합합니다. 미리 정의된 함수는 스크립트 입력 문서를 BHOLD 명령 문서로 변환하는 XSL 문서입니다.

BHOLD 스크립트 처리

명령은 문서에서와 동일한 순서로 실행됩니다. 하나의 함수가 실패하면 실행된 모든 명령이 롤백됩니다.

스크립트 개체

이 섹션에서는 스크립트 개체를 사용하는 방법을 설명합니다.

BHOLD 정보 검색

GetInfo 함수는 BHOLD 권한 부여 시스템의 사용 가능한 데이터에서 정보를 검색하는 데 사용됩니다. 함수에는 함수 이름과 하나 이상의 매개 변수가 필요합니다. 이 함수가 성공하면 BHOLD 개체 또는 컬렉션이 XML 문서 형식으로 반환됩니다.

함수가 성공하지 못하면 GetInfo 함수는 빈 문자열 또는 오류를 반환합니다. 오류 설명 및 번호를 사용하여 오류에 대한 자세한 정보를 얻을 수 있습니다.

GetInfo 함수 'FunctionDispatch'를 사용하여 BHOLD 시스템에서 제어하는 애플리케이션에서 정보를 검색할 수 있습니다. 이 함수에는 애플리케이션의 ID, ASI에 정의된 디스패치 함수 및 ASI에 대한 지원 정보가 있는 XML 문서의 세 가지 매개 변수가 필요합니다. 함수가 성공하면 결과 개체의 XML 형식으로 결과를 사용할 수 있습니다.

아래 코드 조각은 GetInfo의 간단한 C# 예제입니다.

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

마찬가지로 BScript 개체는 웹 서비스를 b1scriptservice통해 액세스할 수도 있습니다. 이 작업은 서버가 BHOLD 이진 파일이 설치된 서버인 http://< server>:5151/BHOLD/Core/b1scriptservice.asmx <를 사용하여 프로젝트에 웹 참조를 추가하여 수행> 됩니다. 자세한 내용은 Visual Studio 프로젝트에 웹 서비스 참조 추가를 참조하세요.

다음 예제에서는 웹 서비스에서 GetInfo 함수를 사용하는 방법을 보여줍니다. 이 코드는 OrgID가 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

스크립트 실행

BScript 개체의 ExecuteScript 함수를 사용하여 스크립트를 실행할 수 있습니다. 이 함수에는 두 개의 매개 변수가 필요합니다. 첫 번째 매개 변수는 스크립트에서 사용할 사용자 지정 정보를 포함하는 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는 생성된 모든 ID가 추가되는 문서의 끝에 추가됩니다.

오류가 포함된 함수만 추가됩니다. 오류 번호 '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>

ID 매개 변수

ID 매개 변수는 특별한 처리를 받습니다. 숫자가 아닌 값은 BHOLD 데이터 저장소에서 해당 엔터티를 찾기 위한 검색 값으로 사용됩니다. 검색 값이 고유하지 않은 경우 검색 값을 준수하는 첫 번째 엔터티가 반환됩니다.

ID와 숫자 검색 값을 구분하기 위해 접두사를 사용할 수 있습니다. 검색 값의 처음 6자가 'no_id:'과 같으면 이러한 문자는 검색에 사용되기 전에 제거됩니다. SQL 와일드카드 문자 '%'를 사용할 수 있습니다.

다음 필드는 검색 값과 함께 사용됩니다.

ID 형식 검색 필드
OrgUnitID Description
roleID Description
Taskid Description
userID DefaultAlias

스크립트 액세스 및 권한

활성 서버 페이지의 서버 쪽 코드는 스크립트를 실행하는 데 사용됩니다. 따라서 스크립트에 대한 액세스는 이러한 페이지에 대한 액세스를 의미합니다. BHOLD 시스템은 사용자 지정 페이지의 진입점에 대한 정보를 유지 관리합니다. 이 정보에는 시작 페이지 및 함수 설명이 포함됩니다(여러 언어를 지원해야 함).

사용자는 사용자 지정 페이지를 입력하고 스크립트를 실행할 수 있는 권한이 부여됩니다. 각 진입점은 작업으로 표시됩니다. 역할 또는 단위를 통해 이 작업을 얻은 각 사용자는 해당 함수를 실행할 수 있습니다.

메뉴의 새 함수는 사용자가 실행할 수 있는 모든 사용자 지정 함수를 제공합니다. 스크립트는 로그온한 사용자와 다른 ID로 BHOLD 시스템에서 작업을 수행할 수 있기 때문입니다. 개체에 대한 감독 없이 하나의 특정 작업을 수행할 수 있는 권한을 부여할 수 있습니다. instance 경우 회사에 신규 고객만 입사할 수 있는 직원에게 유용할 수 있습니다. 이러한 스크립트를 사용하여 자체 등록 페이지를 만들 수도 있습니다.

명령 스크립트

명령 스크립트에는 BHOLD 시스템에서 실행되는 함수 목록이 포함되어 있습니다. 목록은 다음 정의를 준수하는 XML 문서에 기록됩니다.

명령 스크립트 <functions>functions</functions>
functions 함수 {function}
function <function name="functionName" functionParameters [return] (/> | > parameterList </ function>)
functionName 다음 섹션에 설명된 대로 유효한 함수 이름입니다.
functionParameters { functionParameter }
functionParameter parameterName = "parameterValue"
parameterName 유효한 매개 변수 이름입니다.
parameterValue @variable@ | 값
유효한 매개 변수 값입니다.
parameterList <매개 변수> {parameterItem} </parameters>
parameterItem <parameter name="parameterName"> parameterValue </parameter>
return 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 함수는 생성된 단위의 ID를 UnitID라는 변수에 저장합니다. 이 변수는 UserAdd 함수에 대한 입력으로 사용됩니다. 이 함수의 반환 값은 사용되지 않습니다. 다음 섹션에서는 사용 가능한 모든 함수, 필수 매개 변수 및 반환 값에 대해 설명합니다.

함수 실행

이 섹션에서는 실행 함수를 사용하는 방법을 설명합니다.

ABAAttributeRuleAdd

특정 특성 형식에 대해 새 특성 규칙을 만듭니다. 특성 규칙은 하나의 특성 유형에만 연결할 수 있습니다.

지정된 특성 규칙은 가능한 모든 특성 형식에 연결할 수 있습니다.

RuleType은 "ABAattributeruletypeupdate" 명령으로 변경할 수 없습니다. 특성에 대한 설명이 고유해야 합니다.

인수 형식
Description 텍스트
RuleType 특성 규칙의 종류를 지정합니다. 특성 규칙 형식의 종류에 따라 다른 인수를 포함해야 합니다. 다음 규칙 형식 값이 유효합니다.
  • 0: 정규식(인수 "value"추가).
  • 1: 값(인수 "연산자" 및 "value" 추가).
  • 2: 값 목록입니다.
  • 3: 범위(인수 "rangemin" 및 "rangemax"추가).
  • 4: Age(인수 "operator" 및 "value"추가).
InvertResult ["0"|"1"|"N"|"Y"]
AttributeTypeID 텍스트
선택적 인수 유형
연산자 텍스트
참고: RuleType 이 1 또는 4인 경우 이 인수는 필수입니다. 가능한 값은 '=', ''<또는 '>'입니다. XML 태그는 ''에 ">"를, '>'에는 "<"를< 사용해야 합니다.
RangeMin 숫자
참고: RuleType 이 3인 경우 이 인수는 필수입니다.
RangeMax 숫자
참고: RuleType 이 3인 경우 이 인수는 필수입니다.
텍스트
참고: RuleType 이 0, 1 또는 4인 경우 이 인수는 필수입니다. 인수는 숫자 또는 영숫자 값이어야 합니다.
반환 형식 AttributeRuleID 텍스트

applicationadd

새 애플리케이션을 만들고 새 애플리케이션의 ID를 반환합니다.

인수 형식
description
컴퓨터
모듈(module)
매개 변수
protocol
사용자 이름
password
svroleID(선택 사항) 이 인수가 없으면 현재 사용자의 감독자 역할이 사용됩니다.
Applicationaliasformula(선택 사항) 별칭 수식은 애플리케이션의 권한에 할당된 사용자에 대한 별칭을 만드는 데 사용됩니다. 사용자가 이 애플리케이션에 대한 별칭이 아직 없는 경우 별칭이 만들어집니다. 값이 지정되지 않은 경우 사용자의 기본 별칭은 애플리케이션의 별칭으로 사용됩니다. 수식의 형식은 입니다 [<<objecttype>>.<<nameofobjecttypeattribute>>(startindexoffset,length offset)]. 오프셋은 선택 사항입니다. 사용자 및 애플리케이션 특성만 사용할 수 있습니다. 자유 텍스트를 사용할 수 있습니다. 예약된 문자는 왼쪽 대괄호([) 및 오른쪽 대괄호(])입니다. 예: [Application.bholdDescription]\[User.bholdDefAlias(1,5)]
반환 형식 새 애플리케이션의 ID입니다.

AttributeSetValue

개체 형식에 연결된 특성 형식의 값을 설정합니다. 개체 형식 및 특성 형식에 대한 설명이 고유해야 합니다.

인수 형식
ObjectTypeID 텍스트
ObjectID 텍스트
AttributeTypeID 텍스트
텍스트
반환 형식 형식

AttributeTypeAdd

새 특성 형식/속성 형식을 삽입합니다.

인수 형식
DataTypeID 텍스트
설명(=ID) 텍스트
참고: 'a', 'frm', 'id', 'usr' 및 'bhold'를 포함하여 예약된 단어를 사용할 수 없습니다.
MaxLength [1,..,255]의 숫자
ListOfValues(부울) ["0"|"1"|"N"|"Y"]
DefaultValue 텍스트
반환 형식 형식
AttributeTypeID 텍스트

AttributeTypeSetAdd

새 특성 형식 집합을 삽입합니다. 특성 형식 집합에 대한 설명이 고유해야 합니다.

인수 형식
설명(=ID) 텍스트
반환 형식 형식
AttributeTypeSetID 텍스트

AttributeTypeSetAddAttributeType

기존 특성 형식 집합에 새 특성 형식을 삽입합니다. 특성 형식 집합 및 특성 형식에 대한 설명이 고유해야 합니다.

인수 형식
AttributeTypeSetID 텍스트
AttributeTypeID 텍스트
주문 숫자
LocationID 텍스트
참고: 위치는 "group" 또는 "single"입니다.
필수 ["0"|"1"|"N"|"Y"]
반환 형식 형식

ObjectTypeAddAttributeTypeSet

개체 형식에 특성 형식 집합을 추가합니다. 개체 형식 및 특성 형식 집합에 대한 설명이 고유해야 합니다. 개체 유형은 System, OrgUnit, User, Task입니다.

인수 형식
ObjectTypeID 텍스트
AttributeTypeSetID 텍스트
주문 숫자
표시
  • 0: 특성 유형 집합이 표시됩니다.
  • 2: 추가 정보 단추를 선택하면 특성 유형 집합이 표시됩니다.
  • 1: 특성 유형 집합이 보이지 않습니다.
반환 형식 형식

OrgUnitadd

새 조직 구성 단위를 만들고 새 조직 구성 단위의 ID를 반환합니다.

인수 형식
description
orgtypeID
parentID
OrgUnitinheritedroles(선택 사항)
반환 형식 형식
새 단위의 ID OrgUnitinheritedroles 매개 변수
에는 예 또는 아니요 값이 있습니다.

OrgUnitaddsupervisor

사용자를 조직 구성 단위의 감독자로 만듭니다.

인수 형식
svroleID userID 인수를 사용할 수도 있습니다. 이 경우 기본 감독자 역할이 선택됩니다. 기본 감독자 역할에는 __svrole 이름 뒤에 숫자가 잇습니다. userID 인수는 이전 버전과의 호환성을 위해 사용할 수 있습니다.
OrgUnitID

OrgUnitadduser

사용자를 조직 구성 단위의 구성원으로 만듭니다.

인수 형식
userID
OrgUnitID

OrgUnitdelete

조직 구성 단위를 제거합니다.

인수 형식
OrgUnitID

OrgUnitdeleteuser

조직 구성 단위의 구성원으로 사용자를 제거합니다.

인수 형식
userID
OrgUnitID

roleadd

새 역할을 만듭니다.

인수 형식
Description
svrole
svroleID(선택 사항) 이 인수가 없으면 현재 사용자의 감독자 역할이 사용됩니다.
ContextAdaptable(선택 사항) ["0","1","N","Y"]
MaxPermissions(선택 사항) 정수
MaxRoles(선택 사항) 정수
MaxUsers(선택 사항) 정수
반환 형식 형식
새 역할의 ID

roleaddOrgUnit

조직 구성 단위에 역할을 할당합니다.

인수 형식
OrgUnitID roleID
inheritThisRole 'true' 또는 'false'는 역할이 기본 단위에 제안되는지 여부를 나타냅니다.

roleaddrole

역할을 다른 역할의 하위 요소로 할당합니다.

인수 형식
roleID
subRoleID

roleaddsupervisor

사용자를 역할의 감독자로 만듭니다.

인수 형식
svroleID userID 인수를 사용할 수도 있습니다. 이 경우 기본 감독자 역할이 선택됩니다. 기본 감독자 역할에는 __svrole 이름 뒤에 숫자가 잇습니다. userID 인수는 이전 버전과의 호환성을 위해 사용할 수 있습니다.
roleID

roleadduser

사용자에게 역할을 할당합니다. contextID가 지정되지 않은 경우 역할은 컨텍스트에 맞게 조정 가능한 역할이 될 수 없습니다.

인수 형식
userID
roleID
durationType(선택 사항) 'free', 'hours' 및 'days' 값을 포함할 수 있습니다.
durationLength(선택 사항) durationType이 'hours' 또는 '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(선택 사항) 컨텍스트 적응 가능한 역할에만 필요한 조직 구성 단위의 ID입니다.

roledelete

역할을 삭제합니다.

인수 형식
roleID

roledeleteuser

사용자에 대한 역할 할당을 제거합니다. 사용자가 상속한 역할은 이 명령에 의해 해지됩니다.

인수 형식
userID
roleID
contextID(선택 사항)

roleproposeOrgUnit

OrgUnit의 멤버 및 하위 OrgUnits에 할당할 역할을 제안합니다.

인수 형식
OrgUnitID
roleID
durationType(선택 사항) 'free', 'hours' 및 'days' 값을 포함할 수 있습니다.
durationLength durationType이 'hours' 또는 'days'인 경우 필수이며 역할이 사용자에게 할당된 시간 또는 일 수에 대한 정수 값을 포함해야 합니다.
durationFixed 'true' 또는 'false'는 사용자에게 이 역할을 할당하는 것이 durationLength와 같은지 여부를 나타냅니다.
inheritThisRole 'true' 또는 'false'는 역할이 기본 단위에 제안되는지 여부를 나타냅니다.

taskadd

새 작업을 만들고 새 작업의 ID를 반환합니다.

인수 형식
applicationID
description 최대 254자의 텍스트입니다.
taskname 최대 254자의 텍스트입니다.
tokenGroupID
svroleID(선택 사항) 이 인수가 없으면 현재 사용자의 감독자 역할이 사용됩니다.
contextAdaptable(선택 사항) ["0","1","N","Y"]
underconstruction(선택 사항) ["0","1","N","Y"]
auditaction(선택 사항)
  • 0: 알 수 없음(기본값)
  • 1: ReportOnly
  • 2: AlertAppAll
  • 3: AlertAppObsolete
  • 4: AlertAppMissing
  • 5: EnforceAppAll
  • 6: EnforceAppObsolete
  • 7: EnforceAppMissing
  • 8: AlertEnforceAppAll
  • 9: AlertEnforceAppObsolete
  • 10: AlertEnforceAppMissing
  • 11: ImportAll
auditalertmail(선택 사항) 이 사용 권한에 대한 경고인 이메일 주소는 감사자가 보냅니다. 이 인수가 없으면 감사자의 경고 전자 메일 주소가 사용됩니다.
MaxRoles(선택 사항) 정수
MaxUsers(선택 사항) 정수
반환 형식 새 작업의 ID입니다.

taskadditask

두 작업이 호환되지 않음을 나타냅니다.

인수 형식
Taskid
taskID2

taskaddrole

역할에 작업을 할당합니다.

인수 형식
roleID
Taskid

taskaddsupervisor

사용자를 작업의 감독자로 만듭니다.

인수 형식
svroleID userID 인수를 사용할 수도 있습니다. 이 경우 기본 감독자 역할이 선택됩니다. 기본 감독자 역할에는 __svrole 이름 뒤에 숫자가 잇습니다. userID 인수는 이전 버전과의 호환성을 위해 사용할 수 있습니다.
Taskid

useradd

새 사용자를 만들고 새 사용자의 ID를 반환합니다.

인수 형식
description
alias
languageID
  • 1: 영어
  • 2: 네덜란드어
OrgUnitID
enddate(선택 사항) 날짜 형식은 연도, 월 및 일만 필요한 'YYYY-MM-DDThh:nn:ss'입니다. 예를 들어 "2004-12-11" 및 "2004-11-28T08:00"은 유효한 값입니다.
disabled(선택 사항)
  • 0: 사용
  • 1: 사용 안 함
MaxPermissions(선택 사항) 정수
MaxRoles(선택 사항) 정수
반환 형식 새 사용자의 ID입니다.

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 시스템에 저장된 정보를 검색할 수 있습니다. BScript 개체의 GetInfo 함수를 사용하여 각 함수를 호출할 수 있습니다. 일부 개체에는 매개 변수가 필요합니다. 반환되는 데이터에는 로그인한 사용자의 보기 권한 및 감독된 개체가 적용됩니다.

GetInfo 인수

Name 설명
애플리케이션 애플리케이션 목록을 반환.
attributetypes 특성 형식의 목록을 반환합니다.
orgtypes 조직 구성 단위 유형의 목록을 반환합니다.
OrgUnits 조직 구성 단위의 특성이 없는 조직 단위 목록을 반환합니다.
OrgUnitproposedroles 조직 구성 단위에 연결된 제안된 역할 목록을 반환합니다.
OrgUnitroles 지정된 조직 구성 단위의 직접 연결된 역할 목록을 반환합니다.
Objecttypeattributetypes
권한
permissionusers
역할 역할 목록을 반환합니다.
roletasks 지정된 역할의 작업 목록을 반환합니다.
tasks BHOLD에서 알려진 모든 작업을 반환합니다.
users 사용자 목록을 반환합니다.
usersroles 지정된 사용자의 연결된 감독자 역할 목록을 반환합니다.
userpermissions 지정된 사용자의 사용 권한 목록을 반환합니다.

OrgUnit 정보

Name 매개 변수 반환 형식
OrgUnit OrgUnitID OrgUnit
OrgUnitasiattributes OrgUnitID 컬렉션
OrgUnits filter(선택 사항), proptypeid(선택 사항)
proptypeid에 설명된 proptype의 필터에 설명된 문자열이 포함된 단위를 검색합니다. 이 ID를 생략하면 필터가 단위 설명에 적용됩니다. 필터가 제공되지 않으면 표시되는 모든 단위가 반환됩니다.
컬렉션
OrgUnitOrgUnits OrgUnitID 컬렉션
OrgUnitparents OrgUnitID 컬렉션
OrgUnitpropertyvalues OrgUnitID 컬렉션
OrgUnitproptypes 컬렉션
OrgUnitusers OrgUnitID 컬렉션
OrgUnitproposedroles OrgUnitID 컬렉션
OrgUnitroles OrgUnitID 컬렉션
OrgUnitinheritedroles OrgUnitID 컬렉션
OrgUnitsupervisors OrgUnitID 컬렉션
OrgUnitinheritedsupervisors OrgUnitID 컬렉션
OrgUnitsupervisorroles OrgUnitID 컬렉션

역할 정보

Name 매개 변수 반환 형식
역할(role) roleID Object
역할 필터(선택 사항) 컬렉션
roleasiattributes roleID 컬렉션
roleOrgUnits roleID 컬렉션
roleparentroles roleID 컬렉션
rolesubroles roleID 컬렉션
rolesupervisors roleID 컬렉션
rolesupervisorroles roleID 컬렉션
roletasks roleID 컬렉션
roleusers roleID 컬렉션
rolesupervisorroles roleID 컬렉션
proposedroleOrgUnits roleID 컬렉션
proposedroleusers roleID 컬렉션

권한 - 작업 정보

Name 매개 변수 반환 형식
사용 권한(permission) TaskID 사용 권한
권한 필터(선택 사항) 컬렉션
permissionasiattributes TaskID 컬렉션
permissionattachments TaskID 컬렉션
permissionattributetypes - 컬렉션
permissionparams TaskID 컬렉션
permissionroles TaskID 컬렉션
permissionsupervisors TaskID 컬렉션
permissionsupervisorroles TaskID 컬렉션
permissionusers TaskID 컬렉션
task TaskID Task
tasks 필터(선택 사항) 컬렉션
taskattachments TaskID 컬렉션
taskparams TaskID 컬렉션
taskroles TaskID 컬렉션
tasksupervisors TaskID 컬렉션
tasksupervisorroles TaskID 컬렉션
taskusers TaskID 컬렉션

사용자 정보

Name 매개 변수 반환 형식
사용자 UserID 사용자
users filter(선택 사항), attributetypeid(선택 사항)
attributetypeid로 지정된 attributetypeid에 필터로 지정된 문자열에 포함된 사용자를 검색합니다. 이 ID를 생략하면 필터가 사용자 기본 별칭에 적용됩니다. 필터가 제공되지 않으면 표시되는 모든 사용자가 반환됩니다. 예를 들면 다음과 같습니다.
  • GetInfo("users") 는 모든 사용자를 반환합니다.
  • GetInfo("users", "%dmin%") 는 기본 별칭에 "dmin" 문자열이 있는 모든 사용자를 반환합니다.
  • 사용자에게 라는 "City".GetInfo("users", "%msterda%", "City")추가 특성이 있다고 가정합니다. 이 호출은 City 특성에 문자열 "msterda"가 있는 모든 사용자를 반환합니다.
UserCollection
usersapplications UserID 컬렉션
Userpermissions UserID 컬렉션
userroles UserID 컬렉션
usersroles UserID 컬렉션
userstasks UserID 컬렉션
usersunits UserID 컬렉션
usertasks UserID 컬렉션
userunits UserID 컬렉션

반환 형식

이 섹션에서는 GetInfo 함수의 반환 형식에 대해 설명합니다.

Name 반환 형식
컬렉션 =<ITEMS>{<ITEM description="..." id="..." />}</ITEMS>
Object =<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>
Task 사용 권한 참조
사용자 = <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에서 직접 실행되지 않기 때문입니다. 대신 미리 정의된 함수에 대한 입력입니다. 이 미리 정의된 함수는 BHOLD 명령을 사용하여 이 개체를 XML 문서로 변환합니다. 이 메커니즘은 사용자가 setUser 및 함수가 ASI로 디스패치하는 것과 같이 사용자가 실행할 수 없는 함수를 포함하는 BHOLD 시스템에 스크립트를 보내는 것을 보류합니다.

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

다음 단계