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 資訊
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 | 字元 |
---|---|
& |
& |
< |
< |
> |
> |
" |
" |
' |
' |
這些 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 | 指定屬性規則的類型。 視屬性規則類型的類型而定,必須包含其他自變數。 下列規則類型值有效:
|
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 |
訂單 | 數字 |
可見 |
|
傳回類型 | 類型 |
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 (選擇性) |
|
auditalertmail (選擇性) | 稽核員會傳送有關此許可權的警示電子郵件位址。 如果這個自變數不存在,則會使用稽核員的警示電子郵件位址。 |
MaxRoles (選擇性) | 整數 |
MaxUsers (選擇性) | 整數 |
傳回類型 | 新工作的識別碼。 |
taskadditask
表示兩個工作不相容。
引數 | 類型 |
---|---|
taskID | |
taskID2 |
taskaddrole
將工作指派給角色。
引數 | 類型 |
---|---|
roleID | |
taskID |
taskaddsupervisor
讓用戶成為工作的監督員。
引數 | 類型 |
---|---|
svroleID | 您也可以使用自變數 userID。 在此情況下,會選取預設監督員角色。 默認監督員角色的名稱類似 __svrole 後面接著數位。 自變數 userID 可用於回溯相容性。 |
taskID |
useradd
建立新的使用者,傳回新使用者的標識碼。
引數 | 類型 |
---|---|
description | |
alias | |
languageID |
|
OrgUnitID | |
enddate (選擇性) | 日期格式為 'YYYY-MM-DDThh:nn:ss“,其中只需要年、月和日。 例如,“2004-12-11” 和 “2004-11-28T08:00” 都是有效的值。 |
已停用 (選擇性) |
|
MaxPermissions (選擇性) | 整數 |
MaxRoles (選擇性) | 整數 |
傳回類型 | 新使用者的標識碼。 |
UserAddRole
新增使用者角色。
引數 | 類型 |
---|---|
UserDeleteRole
刪除使用者角色。
引數 | 類型 |
---|---|
Userupdate
更新使用者。
引數 | 類型 |
---|---|
UserID | |
描述 (選擇性) | |
語言 |
|
userDisabled (選擇性) |
|
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 中篩選的使用者。 如果省略此標識碼,篩選條件會套用至用戶默認別名。 如果未提供任何篩選,則會傳回所有可見的使用者。 例如:
|
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>