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 命令檔。
命令的執行順序與檔中的順序相同。 如果一個函式失敗,則會回復所有執行的命令。
Script 物件
本節描述如何使用腳本物件。
擷取 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://<伺服器>:5151/BHOLD/Core/b1scriptservice.asmx,其中 <伺服器> 是已安裝 BHOLD 二進位檔的伺服器,將 Web 參考新增至您的專案。 如需詳細資訊,請參閱 將 Web 服務參考新增至 Visual Studio 專案。
下列範例示範如何從 Web 服務使用 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使用Web服務,並使用 GetInfo。 如需SOAP 1.1、SOAP 1.2和 HTTP POST 的其他範例,請參閱 BHOLD Managed Reference 一節,或者您可以直接從瀏覽器流覽至 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 通配符 '%' 。
下列欄位會與搜尋值搭配使用:
標識元類型 | 搜尋欄位 |
---|---|
OrgUnitID | 說明 |
roleID | 說明 |
taskID | 說明 |
userID | DefaultAlias |
編寫存取權和許可權的腳本
使用 Active Server Pages 中的伺服器端程式代碼來執行腳本。 因此,存取腳本表示對這些頁面的存取。 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 | <參數名稱=“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 函式的輸入。 不會使用此函式的傳回值。 下列各節說明所有可用的函式、必要的參數及其傳回值。
執行函式
本節描述如何使用 execute 函式。
ABAAttributeRuleAdd
在特定屬性類型上建立新的屬性規則。 屬性規則只能連結至一個屬性類型。
指定的屬性規則可以連結至所有可能的屬性類型。
RuleType 無法使用 “ABAattributeruletypeupdate” 命令來變更。 需要以唯一方式描述屬性。
論點 | 類型 |
---|---|
說明 | 文字 |
RuleType | 指定屬性規則的種類。 視屬性規則類型的類型而定,必須包含其他自變數。 下列規則類型值有效:
|
InvertResult | ["0"|"1"|"N"|"Y"] |
AttributeTypeID | 文字 |
選擇性自變數 | 類型 |
---|---|
操作員 | Text 附注:如果 RuleType 為 1 或 4,則此自變數為必要。 可能的值為 '='、'<'或 '>'。 XML 標籤必須使用 '>' 和 '<'<“ 的 ”>“。 |
範圍最小值 | 數 附注:如果 RuleType 為 3,則此自變數為必要。 |
RangeMax | 數 附注:如果 RuleType 為 3,則此自變數為必要。 |
價值 | Text 附注:如果 RuleType 為 0、1 或 4,則此自變數為必要。 自變數必須是數值或英數位元值。 |
傳回類型 AttributeRuleID | 文字 |
applicationadd
建立新的應用程式,傳回新應用程式的標識碼。
論點 | 類型 |
---|---|
說明 | |
machine | |
模組 | |
參數 | |
協定 | |
用戶名 | |
密碼 | |
svroleID (選擇性) | 如果這個自變數不存在,則會使用目前使用者的主管角色。 |
Applicationaliasformula (選擇性) | 將別名公式指派給應用程式的許可權時,用來建立使用者的別名。 如果使用者還沒有此應用程式的別名,則會建立別名。 如果未指定任何值,則會使用用戶的預設別名作為應用程式的別名。 公式的格式為 [<<objecttype>>.<<nameofobjecttypeattribute>>(startindexoffset,length offset)] 。 位移是選擇性的。 只能使用使用者和應用程式屬性。 可以使用自由文字。 保留字元為左方括號 ([) 和右方括弧 (])。 例如: [Application.bholdDescription]\[User.bholdDefAlias(1,5)] 。 |
返回類型 | 新應用程式的標識碼。 |
AttributeSetValue
設定連接到物件型別的屬性型別值。 需要物件類型和屬性類型的描述是唯一的。
論點 | 類型 |
---|---|
ObjectTypeID | 文字 |
物件識別碼 | 文字 |
AttributeTypeID | 文字 |
價值 | 文字 |
傳回類型 | 類型 |
AttributeTypeAdd
插入新的屬性類型 / 屬性類型。
論點 | 類型 |
---|---|
DataTypeID | 文字 |
描述 (=Identity) | Text 附註:無法使用保留字,包括 'a'、'frm'、'id'、'usr'和 'bhold'。 |
最大長度 | [1,..,255] 中的數位 |
ListOfValues (布林值) | ["0"|"1"|"N"|"Y"] |
預設值 | 文字 |
傳回類型 | 類型 |
AttributeTypeID | 文字 |
AttributeTypeSetAdd
插入新的屬性類型集。 需要屬性類型集的描述是唯一的。
論點 | 類型 |
---|---|
描述 (=Identity) | 文字 |
傳回類型 | 類型 |
AttributeTypeSetID | 文字 |
AttributeTypeSetAddAttributeType
在現有的屬性類型集中插入新的屬性類型。 需要屬性類型集和屬性類型的描述是唯一的。
論點 | 類型 |
---|---|
AttributeTypeSetID | 文字 |
AttributeTypeID | 文字 |
訂單 | 數字 |
LocationID | Text 附注:位置為「群組」或「單一」。 |
強制的 | ["0"|"1"|"N"|"Y"] |
傳回類型 | 類型 |
ObjectTypeAddAttributeTypeSet
將屬性類型設定為物件類型。 需要物件類型和屬性類型集的描述是唯一的。 物件類型包括:System、OrgUnit、User、Task。
論點 | 類型 |
---|---|
ObjectTypeID | 文字 |
AttributeTypeSetID | 文字 |
訂單 | 數字 |
可見 |
|
傳回類型 | 類型 |
OrgUnitadd
建立新的組織單位,傳回新組織單位的標識符。
論點 | 類型 |
---|---|
說明 | |
orgtypeID | |
parentID | |
OrgUnitinheritedroles (選擇性) | |
傳回類型 | 類型 |
新單位的標識碼 | OrgUnitinheritedroles 參數 具有 [是] 或 [否] 值。 |
OrgUnitaddsupervisor
讓使用者成為組織單位的主管。
論點 | 類型 |
---|---|
svroleID | 您也可以使用自變數 userID。 在此情況下,會選取預設的監督員角色。 默認主管角色的名稱,例如 __svrole 後面接著數位。 自變數 userID 可用於回溯相容性。 |
OrgUnitID |
OrgUnitadduser
讓使用者成為組織單位的成員。
論點 | 類型 |
---|---|
userID | |
OrgUnitID |
OrgUnitdelete
拿掉組織單位。
論點 | 類型 |
---|---|
OrgUnitID |
OrgUnitdeleteuser
將使用者移除為組織單位的成員。
論點 | 類型 |
---|---|
userID | |
OrgUnitID |
roleadd
建立新的角色。
論點 | 類型 |
---|---|
說明 | |
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 | |
說明 | 最多 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
建立新的使用者,傳回新使用者的標識碼。
論點 | 類型 |
---|---|
說明 | |
別名 | |
languageID |
|
OrgUnitID | |
enddate (選擇性) | 日期格式為 'YYYY-MM-DDThh:nn:ss',其中只需要年份、月和日。 例如,“2004-12-11” 和 “2004-11-28T08:00” 都是有效值。 |
disabled (選擇性) |
|
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 已知的所有工作。 |
使用者 | 傳回使用者清單。 |
usersroles | 傳回指定使用者的連結主管角色清單。 |
userpermissions | 傳回指定使用者的許可權清單。 |
OrgUnit 資訊
名稱 | 參數 | 傳回類型 |
---|---|---|
OrgUnit | OrgUnitID | OrgUnit |
OrgUnitasiattributes | OrgUnitID | 集合 |
OrgUnits | filter (optional), proptypeid (選擇性) 搜尋包含 篩選 中所描述之 proptype 中所描述 proptypeid中所述的單位。 如果省略此標識碼,篩選會套用至單元描述。 如果未提供任何篩選,則會傳回所有可見單位。 |
集合 |
OrgUnitOrgUnits | OrgUnitID | 集合 |
OrgUnitparents | OrgUnitID | 集合 |
OrgUnitpropertyvalues | OrgUnitID | 集合 |
OrgUnitproptypes | 集合 | |
OrgUnitusers | OrgUnitID | 集合 |
OrgUnitproposedroles | OrgUnitID | 集合 |
OrgUnitroles | OrgUnitID | 集合 |
OrgUnitinheritedroles | OrgUnitID | 集合 |
OrgUnitsupervisors | OrgUnitID | 集合 |
OrgUnitinheritedsupervisors | OrgUnitID | 集合 |
OrgUnitsupervisorroles | OrgUnitID | 集合 |
角色資訊
名稱 | 參數 | 傳回類型 |
---|---|---|
角色 | roleID | 物件 |
角色 | filter (選擇性) | 集合 |
roleasiattributes | roleID | 集合 |
roleOrgUnits | roleID | 集合 |
roleparentroles | roleID | 集合 |
rolesubroles | roleID | 集合 |
rolesupervisors | roleID | 集合 |
rolesupervisorroles | roleID | 集合 |
roletasks | roleID | 集合 |
roleusers | roleID | 集合 |
rolesupervisorroles | roleID | 集合 |
proposedroleOrgUnits | roleID | 集合 |
proposedroleusers | roleID | 集合 |
許可權 - 工作資訊
名稱 | 參數 | 傳回類型 |
---|---|---|
許可 | TaskID | 權限 |
權限 | filter (選擇性) | 集合 |
permissionasiattributes | TaskID | 集合 |
permissionattachments | TaskID | 集合 |
permissionattributetypes | - | 集合 |
permissionparams | TaskID | 集合 |
permissionroles | TaskID | 集合 |
permissionsupervisors | TaskID | 集合 |
permissionsupervisorroles | TaskID | 集合 |
permissionusers | TaskID | 集合 |
工作 | TaskID | 任務 |
任務 | filter (選擇性) | 集合 |
taskattachments | TaskID | 集合 |
taskparams | TaskID | 集合 |
taskroles | TaskID | 集合 |
tasksupervisors | TaskID | 集合 |
tasksupervisorroles | TaskID | 集合 |
taskusers | TaskID | 集合 |
用戶資訊
名稱 | 參數 | 傳回類型 |
---|---|---|
使用者 | UserID | 使用者 |
使用者 | filter (optional), attributetypeid (optional) 搜尋包含在 attributetype 所指定之 attributetype 中的使用者,以篩選所指定的字串。 如果省略此標識碼,篩選會套用至用戶默認別名。 如果未提供任何篩選,則會傳回所有可見的使用者。 例如:
|
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 直接執行;而不是它,這是預先定義的函式的輸入。 這個預先定義的函式會使用 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>