共用方式為


Microsoft Identity Manager 2016 的 BHOLD 開發人員參考

BHOLD 核心模組可以處理腳本命令。 您可以在 .NET 專案中直接使用 bscript.dll 來完成。 也與 Web 服務 b1scriptservice.asmx 介面互動。

在執行腳本之前,應該收集腳本內的所有資訊來撰寫此腳本。 此資訊可以從下列來源收集:

  • 使用者輸入
  • BHOLD 數據
  • 應用程式
  • 其他

您可以使用文稿物件的 GetInfo 函數來擷取 BHOLD 數據。 命令的完整清單可以呈現儲存在 BHOLD 資料庫中的所有數據。 不過,呈現的數據受限於使用者登入的檢視許可權。 結果的格式為可以剖析的 XML 檔。

另一個資訊來源可以是 BHOLD 所控制的應用程式之一。 應用程式嵌入式管理單元具有特殊函式 FunctionDispatch,可用來呈現應用程式特定資訊。 這也會顯示為 XML 檔。

最後,如果沒有其他方法,腳本可以直接包含其他應用程式或系統的命令。 BHOLD 伺服器上額外軟體的 NoThenstallation 可能會破壞整個系統的安全性。

此資訊全都會放入一份 XML 檔中,並指派給 BHOLD 腳本物件。 物件會將這份檔與預先定義的函式結合。 預先定義的函式是 XSL 檔,可將腳本輸入檔轉譯成 BHOLD 命令檔。

BHOLD 腳本處理

命令的執行順序與檔中的順序相同。 如果一個函式失敗,則會復原執行的所有命令。

腳本物件

本節說明如何使用腳本物件。

擷取 BHOLD 資訊

GetInfo 函式可用來從 BHOLD 授權系統中的可用數據擷取資訊。 函式需要函式名稱,最後需要一或多個參數。 如果此函式成功,則會以 XML 檔的形式傳回 BHOLD 物件或集合。

如果函式不成功,GetInfo 函式會傳回空字串或錯誤。 錯誤描述和數位可用來取得失敗的詳細資訊。

GetInfo 函數 'FunctionDispatch' 可用來從 BHOLD 系統所控制的應用程式擷取資訊。 此函式需要三個參數:應用程式的標識碼、ASI 中所定義的分派函式,以及具有 ASI 支援資訊的 XML 檔。 如果函式成功,結果物件中會以 XML 格式提供結果。

下列代碼段是 GetInfo 的簡單 C# 範例:

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

同樣地,也可以透過 Web 服務 b1scriptservice存取 BScript 物件。 做法是使用 http://< server>:5151/BHOLD/Core/b1scriptservice.asmx 將 Web 參考新增至專案,其中 <伺服器> 是已安裝 BHOLD 二進位檔的伺服器。 如需詳細資訊,請參閱 將 Web 服務參考新增至 Visual Studio 專案

下列範例示範如何使用 Web 服務的 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使用Web服務,並使用 GetInfo。 如需SOAP 1.1、SOAP 1.2和 HTTP POST 的其他範例,請參閱 BHOLD 受控參考一節,或者您可以直接從瀏覽器流覽至 Web 服務,並在該處檢視它們。

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 Web方法的範例。 這個方法會叫用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

執行 executescript 函式之後,可以使用這個 GetInfo 函式。 函式會傳回包含完整執行報表的 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 通配符 '%'。

下列欄位會與搜尋值搭配使用:

ID 類型 搜尋欄位
OrgUnitID Description
roleID Description
taskID Description
userID DefaultAlias

編寫存取權和許可權的腳本

使用中伺服器頁面中的伺服器端程式代碼來執行腳本。 因此,存取腳本表示存取這些頁面。 BHOLD 系統會維護自定義頁面進入點的相關信息。 此資訊包括起始頁和函式描述, (應支援多種語言) 。

用戶有權輸入自定義頁面並執行腳本。 每個進入點都會呈現為工作。 透過角色或單位取得此工作的每個用戶都能夠執行對應的函式。

功能表中的新函式會顯示用戶可執行的所有自定義函式。 因為腳本可以在 BHOLD 系統中,以不同於使用者登入的身分識別來執行動作。 不需監督任何物件,即可授與執行一個特定動作的許可權。 例如,對於只允許將新客戶輸入公司的員工而言,這可能很有用。 這些腳本也可以用來建立自我註冊頁面。

命令腳本

命令文本包含 BHOLD 系統所執行的函式清單。 此列表是以符合下列定義的 XML 檔案撰寫:

命令腳本 <functions>functions</functions>
functions 函式 {function}
函數 <function name=“functionName” functionParameters [return] (/> | > parameterList </> function)
functionName 如下列各節所述,有效的函式名稱。
functionParameters { functionParameter }
functionParameter parameterName = “parameterValue”
parameterName 有效的參數名稱。
parameterValue @variable@ |價值
有效的參數值。
parameterList <parameters> {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 會將所建立單位的標識碼儲存在名為 UnitID 的變數中。 此變數會當做 UserAdd 函式的輸入使用。 不會使用此函式的傳回值。 下列各節說明所有可用的函式、必要的參數及其傳回值。

執行函式

本節說明如何使用 execute 函式。

ABAAttributeRuleAdd

在特定屬性類型上建立新的屬性規則。 屬性規則只能連結至一個屬性類型。

指定的屬性規則可以連結至所有可能的屬性類型。

RuleType 無法使用 “ABAattributeruletypeupdate” 命令來變更。 需要唯一描述屬性。

引數 類型
描述 Text
RuleType 指定屬性規則的類型。 視屬性規則類型的類型而定,必須包含其他自變數。 下列規則類型值有效:
  • 0:正則表達式 (新增自變數 “value”) 。
  • 1:值 (新增自變數 “operator” 和 “value”) 。
  • 2:值清單。
  • 3:範圍 (新增自變數 “rangemin” 和 “rangemax”) 。
  • 4:年齡 (新增自變數 “operator” 和 “value”) 。
InvertResult ["0"|"1"|"N"|"Y"]
AttributeTypeID Text
選擇性引數 類型
運算子 Text
注意:如果 RuleType 為 1 或 4,這個自變數是必要的。 可能的值為 '='、'<' 或 '>'。 XML 標籤需要針對 '>' 使用 “>”,而 '<' 則需要使用 “<”。
RangeMin 數字
注意:如果 RuleType 為 3,此自變數是必要的。
RangeMax 數字
注意:如果 RuleType 為 3,此自變數是必要的。
Text
注意:如果 RuleType 為 0、1 或 4,則此自變數是必要的。 自變數必須是數值或英數位元值。
傳回類型 AttributeRuleID Text

applicationadd

建立新的應用程式,傳回新應用程式的標識碼。

引數 類型
description
機器
模組
參數 (parameter)
protocol
使用者名稱
password
svroleID (選擇性) 如果這個自變數不存在,則會使用目前用戶的監督員角色。
Applicationaliasformula (選擇性) 將別名公式指派給應用程式的許可權時,會用來為使用者建立別名。 如果使用者還沒有此應用程式的別名,就會建立別名。 如果未指定任何值,則會使用用戶的預設別名作為應用程式的別名。 公式的格式為 [<<objecttype>>.<<nameofobjecttypeattribute>>(startindexoffset,length offset)]。 位移是選擇性的。 只能使用 User 和 Application 屬性。 可以使用自由文字。 保留字元是左方括號 ([) 和右方括號 (]) 。 例如:[Application.bholdDescription]\[User.bholdDefAlias(1,5)]
傳回類型 新應用程式的標識碼。

AttributeSetValue

設定連接到物件型別的屬性型別值。 需要物件類型和屬性類型的描述是唯一的。

引數 類型
ObjectTypeID Text
ObjectID Text
AttributeTypeID Text
Text
傳回類型 類型

AttributeTypeAdd

插入新的屬性類型 /屬性類型。

引數 類型
DataTypeID Text
描述 (=Identity) Text
注意:無法使用保留字,包括 'a'、'frm'、'id'、'usr'和 'bhold'。
MaxLength [1,..,255] 中的數位
ListOfValues (布爾值) ["0"|"1"|"N"|"Y"]
DefaultValue Text
傳回類型 類型
AttributeTypeID Text

AttributeTypeSetAdd

插入新的屬性類型集。 需要屬性類型集的描述是唯一的。

引數 類型
描述 (=Identity) Text
傳回類型 類型
AttributeTypeSetID Text

AttributeTypeSetAddAttributeType

在現有的屬性類型集中插入新的屬性類型。 需要屬性類型集和屬性類型的描述是唯一的。

引數 類型
AttributeTypeSetID Text
AttributeTypeID Text
訂單 數字
LocationID Text
注意:位置為「群組」或「單一」。
強制性 ["0"|"1"|"N"|"Y"]
傳回類型 類型

ObjectTypeAddAttributeTypeSet

將屬性類型集加入至物件類型。 需要物件類型和屬性類型集的描述是唯一的。 物件類型包括:System、OrgUnit、User、Task。

引數 類型
ObjectTypeID Text
AttributeTypeSetID Text
訂單 數字
可見
  • 0:屬性類型集是可見的。
  • 2:選取 [更多資訊 ] 按鈕時,會顯示屬性類型集。
  • 1:屬性類型集不可見。
傳回類型 類型

OrgUnitadd

建立新的組織單位,傳回新組織單位的標識符。

引數 類型
description
orgtypeID
parentID
OrgUnitinheritedroles (選擇性)
傳回類型 類型
新單位的標識碼 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 (選擇性) 整數
傳回類型 類型
新角色的標識碼

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 (選擇性) 組織單位的標識碼,僅適用於內容可調整的角色。

roledelete

刪除角色。

引數 類型
roleID

roledeleteuser

拿掉使用者的角色指派。 用戶繼承的角色會由此命令撤銷。

引數 類型
userID
roleID
contextID (選擇性)

roleproposeOrgUnit

建議將角色指派給 OrgUnit 的成員和子組織單位。

引數 類型
OrgUnitID
roleID
durationType (選擇性) 可以包含值 『free』、『hours』 和 『days』。
durationLength durationType 為 'hours' 或 'days' 時,應該包含角色指派給使用者的時數或天數的整數值。
durationFixed 'true' 或 'false',指出將此角色指派給使用者是否應該等於 durationLength。
inheritThisRole 'true' 或 'false',指出角色是否建議為基礎單位。

taskadd

建立新的工作,傳回新工作的標識碼。

引數 類型
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 (選擇性) 整數
傳回類型 新工作的識別碼。

taskadditask

表示兩個工作不相容。

引數 類型
taskID
taskID2

taskaddrole

將工作指派給角色。

引數 類型
roleID
taskID

taskaddsupervisor

讓用戶成為工作的監督員。

引數 類型
svroleID 您也可以使用自變數 userID。 在此情況下,會選取預設監督員角色。 默認監督員角色的名稱類似 __svrole 後面接著數位。 自變數 userID 可用於回溯相容性。
taskID

useradd

建立新的使用者,傳回新使用者的標識碼。

引數 類型
description
alias
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
描述 (選擇性)
語言
  • 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 自變數

名稱 描述
應用程式 傳回應用程式的清單。
attributetypes 傳回屬性類型的清單。
orgtypes 傳回組織單位類型的清單。
OrgUnits 傳回沒有組織單位屬性的組織單位清單。
OrgUnitproposedroles 傳回連結至組織單位的建議角色清單。
OrgUnitroles 傳回指定組織單位直接連結角色的清單
Objecttypeattributetypes
權限
permissionusers
角色 傳回角色清單。
roletasks 傳回指定角色的工作清單。
工作 傳回 BHOLD 已知的所有工作。
users 傳回使用者清單。
usersroles 傳回指定使用者的連結監督員角色清單。
userpermissions 傳回指定使用者的許可權清單。

OrgUnit 資訊

名稱 參數 傳回類型
OrgUnit OrgUnitID OrgUnit
OrgUnitasiattributes OrgUnitID 集合
OrgUnits filter (選擇性) 、proptypeid (選擇性)
proptypeid 中所述的 proptype 中,搜尋包含篩選中所描述字串的單位。 如果省略此標識碼,篩選條件會套用至單元描述。 如果未提供任何篩選條件,則會傳回所有可見的單位。
集合
OrgUnitOrgUnits OrgUnitID 集合
OrgUnitparents OrgUnitID 集合
OrgUnitpropertyvalues OrgUnitID 集合
OrgUnitproptypes 集合
OrgUnitusers OrgUnitID 集合
OrgUnitproposedroles OrgUnitID 集合
OrgUnitroles OrgUnitID 集合
OrgUnitinheritedroles OrgUnitID 集合
OrgUnitsupervisors OrgUnitID 集合
OrgUnitinheritedsupervisors OrgUnitID 集合
OrgUnitsupervisorroles OrgUnitID 集合

角色資訊

名稱 參數 傳回類型
角色 (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 集合

許可權 - 工作資訊

名稱 參數 傳回類型
權限 (permission) TaskID 權限
權限 篩選 (選擇性) 集合
permissionasiattributes TaskID 集合
permissionattachments TaskID 集合
permissionattributetypes - 集合
permissionparams TaskID 集合
permissionroles TaskID 集合
permissionsupervisors TaskID 集合
permissionsupervisorroles TaskID 集合
permissionusers TaskID 集合
工作 (task) TaskID 工作
工作 篩選 (選擇性) 集合
taskattachments TaskID 集合
taskparams TaskID 集合
taskroles TaskID 集合
tasksupervisors TaskID 集合
tasksupervisorroles TaskID 集合
taskusers TaskID 集合

使用者資訊

名稱 參數 傳回類型
user UserID 使用者
users filter (選擇性) ,attributetypeid (選擇性)
搜尋包含在 attributetypeid 所指定之字串的 attributetype 中篩選的使用者。 如果省略此標識碼,篩選條件會套用至用戶默認別名。 如果未提供任何篩選,則會傳回所有可見的使用者。 例如:
  • 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 函式的傳回型別。

名稱 傳回類型
集合 =<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>
工作 請參閱許可權
使用者 = <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。Parameters 對象,最後會呼叫 函 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 檔。 此機制會防止使用者將腳本傳送至包含使用者不允許執行的函式的 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>

下一步