BHOLD コア モジュールでは、スクリプト コマンドを処理できます。 これを行うには、.NET プロジェクトで bscript.dll を直接使用します。 Web サービス b1scriptservice.asmx インターフェイスとの対話も行います。
スクリプトを実行する前に、スクリプト内のすべての情報を収集して、このスクリプトを作成する必要があります。 この情報は、次のソースから収集できます。
- ユーザー入力
- BHOLD データ
- アプリケーション
- その他
BHOLD データは、スクリプト オブジェクトの GetInfo 関数を使用して取得できます。 BHOLD データベースに格納されているすべてのデータを表示できるコマンドの完全な一覧があります。 ただし、表示されるデータは、ログインしたユーザーの表示アクセス許可の対象となります。 結果は、解析可能な XML ドキュメントの形式になります。
情報のもう 1 つのソースは、BHOLD によって制御されるアプリケーションのいずれかです。 アプリケーション スナップインには特別な関数 FunctionDispatch があり、これを使用してアプリケーション固有の情報を表示できます。 これは XML ドキュメントとしても表示されます。
最後に、他の方法がない場合は、スクリプトに他のアプリケーションまたはシステムに直接コマンドを含めることができます。 NoBHOLDサーバー上の余分なソフトウェアの拡張は、システム全体のセキュリティを損なう可能性があります。
この情報はすべて 1 つの XML ドキュメントに格納され、BHOLD スクリプト オブジェクトに割り当てられます。 オブジェクトは、このドキュメントを定義済みの関数と結合します。 定義済みの関数は、スクリプト入力ドキュメントを BHOLD コマンド ドキュメントに変換する XSL ドキュメントです。
BHOLD スクリプト処理
BHOLD Script Processingの
コマンドは、ドキュメントと同じ順序で実行されます。 1 つの関数が失敗すると、実行されたすべてのコマンドがロールバックされます。
Script オブジェクト
このセクションでは、スクリプト オブジェクトの使用方法について説明します。
BHOLD 情報を取得する
GetInfo 関数は、BHOLD 承認システムで使用可能なデータから情報を取得するために使用されます。 この関数には、関数名と最終的に 1 つ以上のパラメーターが必要です。 この関数が成功すると、BHOLD オブジェクトまたはコレクションが XML ドキュメントの形式で返されます。
関数が成功しない場合、GetInfo 関数は空の文字列またはエラーを返します。 エラーの説明と番号を使用して、エラーに関する詳細情報を取得できます。
GetInfo 関数 'FunctionDispatch' を使用して、BHOLD システムによって制御されるアプリケーションから情報を取得できます。 この関数には、アプリケーションの ID、ASI で定義されているディスパッチ関数、および ASI のサポート情報を含む XML ドキュメントの 3 つのパラメーターが必要です。 関数が成功した場合、結果は結果オブジェクトの XML 形式で使用できます。
次のスニペットは、GetInfo の単純な C# の例です。
ScriptProcessor myScriptProcessor = new ScriptProcessor();
myScriptProcessor.Initializae("CORP\\b1user");
myScriptProcessor.GetInfo("OrgUnit", "1");
同様に、BScript オブジェクトにも Web サービス b1scriptservice経由でアクセスできます。 これを行うには、http://<サーバー>:5151/BHOLD/Core/b1scriptservice.asmx を使用してプロジェクトに Web 参照を追加します。このサーバー<>は、BHOLD バイナリがインストールされているサーバーです。 詳細については、「Visual Studio プロジェクトへの Web サービス参照の追加」を参照してください。
次の例は、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 と GetInfo を使用して Web サービスを使用します。 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 関数を使用してスクリプトを実行できます。 この関数には 2 つのパラメーターが必要です。 最初のパラメーターは、スクリプトで使用されるカスタム情報を含む XML ドキュメントです。 2 番目のパラメーターは、使用する定義済みスクリプトの名前です。 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
この 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 | 説明 |
| roleID | 説明 |
| taskID | 説明 |
| userID | DefaultAlias |
スクリプトのアクセスとアクセス許可
Active Server Pages のサーバー側コードは、スクリプトの実行に使用されます。 したがって、スクリプトへのアクセスは、これらのページへのアクセスを意味します。 BHOLD システムは、カスタム ページのエントリ ポイントに関する情報を保持します。 この情報には、スタート ページと関数の説明が含まれます (複数の言語をサポートする必要があります)。
ユーザーには、カスタム ページを入力してスクリプトを実行できる権限があります。 各エントリ ポイントはタスクとして表示されます。 ロールまたはユニットを介してこのタスクを取得した各ユーザーは、対応する関数を実行できます。
メニューの新しい関数には、ユーザーが実行できるすべてのカスタム関数が表示されます。 スクリプトは、ログオンしたユーザーとは異なる ID で BHOLD システムでアクションを実行できるためです。 オブジェクトを監督することなく、特定の 1 つのアクションを実行するアクセス許可を付与することができます。 たとえば、これは、会社に新しい顧客を入力することしか許可されていない従業員に役立つ場合があります。 これらのスクリプトを使用して、自己登録ページを作成することもできます。
コマンド スクリプト
コマンド スクリプトには、BHOLD システムによって実行される関数の一覧が含まれています。 このリストは、次の定義に準拠する XML ドキュメントに記述されます。
| コマンド スクリプト | <functions>functions</functions> |
|---|---|
| functions | 関数 {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="@variable@" |
| 変数 | カスタム変数名。 |
XML には、特殊文字の次の変換があります。
| XML | キャラクター |
|---|---|
& |
および |
< |
< |
> |
> |
" |
「」 |
' |
' |
これらの XML 文字は識別子で使用できますが、推奨されません。
次のコードは、3 つの関数を持つ有効なコマンド ドキュメントの例を示しています。
<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
特定の属性の種類に対して新しい属性ルールを作成します。 属性ルールは、1 つの属性の種類にのみリンクできます。
指定した属性ルールは、使用可能なすべての属性の種類にリンクできます。
RuleType は、"ABAattributeruletypeupdate" コマンドでは変更できません。 属性の説明を一意にする必要があります。
| 議論 | タイプ |
|---|---|
| 説明 | テキスト |
| RuleType | 属性ルールの種類を指定します。 属性ルールの種類に応じて、他の引数を含める必要があります。 次の規則の種類の値が有効です。
|
| InvertResult | ["0"|"1"|"N"|"Y"] |
| AttributeTypeID | テキスト |
| 省略可能な引数。 | タイプ |
|---|---|
| オペレーター | テキスト 注: RuleType が 1 または 4 場合、この引数は必須です。 指定できる値は、'='、'<'、または '>' です。 XML タグでは、'>' には ">" を、'<' には "<" を使用する必要があります。 |
| RangeMin | 番号 注: RuleType が 3 の場合、この引数 必須です。 |
| RangeMax | 番号 注: RuleType が 3 の場合、この引数 必須です。 |
| 価値 | テキスト 注: RuleType 0、1、または 4 の場合、この引数は必須です。 引数は、数値または英数字である必要があります。 |
| 戻り値の型 AttributeRuleID | テキスト |
applicationadd
新しいアプリケーションを作成し、新しいアプリケーションの ID を返します。
| 議論 | タイプ |
|---|---|
| 説明 | |
| machine | |
| モジュール | |
| パラメーター | |
| 議定書 | |
| username | |
| パスワード | |
| svroleID (省略可能) | この引数が存在しない場合は、現在のユーザーのスーパーバイザ ロールが使用されます。 |
| Applicationaliasformula (省略可能) | エイリアス式は、アプリケーションのアクセス許可に割り当てられたユーザーのエイリアスを作成するために使用されます。 ユーザーがこのアプリケーションのエイリアスをまだ持っていない場合は、エイリアスが作成されます。 値が指定されていない場合、ユーザーの既定のエイリアスがアプリケーションのエイリアスとして使用されます。 数式は [<<objecttype>>.<<nameofobjecttypeattribute>>(startindexoffset,length offset)]として書式設定されます。 オフセットは省略可能です。 ユーザー属性とアプリケーション属性のみを使用できます。 フリー テキストを使用できます。 予約文字は左角かっこ ([) と右角かっこ (]) です。 (例: [Application.bholdDescription]\[User.bholdDefAlias(1,5)])。 |
| 戻り値の型 | 新しいアプリケーションの ID。 |
AttributeSetValue
オブジェクト型に接続されている属性型の値を設定します。 オブジェクト型と属性型の説明が一意である必要があります。
| 議論 | タイプ |
|---|---|
| ObjectTypeID | テキスト |
| ObjectID | テキスト |
| AttributeTypeID | テキスト |
| 価値 | テキスト |
| 戻り値の型 | タイプ |
AttributeTypeAdd
新しい属性の型/プロパティ型を挿入します。
| 議論 | タイプ |
|---|---|
| DataTypeID | テキスト |
| 説明 (=Identity) | テキスト 注: 予約語 ('a'、'frm'、'id'、'usr'、'bhold' など) は使用できません。 |
| MaxLength | [1,..,255] の数値 |
| ListOfValues (boolean) | ["0"|"1"|"N"|"Y"] |
| デフォルト値 | テキスト |
| 戻り値の型 | タイプ |
| AttributeTypeID | テキスト |
AttributeTypeSetAdd
新しい属性の種類セットを挿入します。 属性型セットの説明が一意である必要があります。
| 議論 | タイプ |
|---|---|
| 説明 (=Identity) | テキスト |
| 戻り値の型 | タイプ |
| AttributeTypeSetID | テキスト |
AttributeTypeSetAddAttributeType
既存の属性型セットに新しい属性型を挿入します。 属性型セットと属性型の説明が一意である必要があります。
| 議論 | タイプ |
|---|---|
| AttributeTypeSetID | テキスト |
| AttributeTypeID | テキスト |
| 注文 | 番号 |
| LocationID | テキスト 注: 場所は "グループ" または "単一" です。 |
| 必須 | ["0"|"1"|"N"|"Y"] |
| 戻り値の型 | タイプ |
ObjectTypeAddAttributeTypeSet
属性型セットをオブジェクト型に追加します。 オブジェクト型と属性型セットの説明が一意である必要があります。 オブジェクトの種類は、System、OrgUnit、User、Task です。
| 議論 | タイプ |
|---|---|
| ObjectTypeID | テキスト |
| AttributeTypeSetID | テキスト |
| 注文 | 番号 |
| 目に見える |
|
| 戻り値の型 | タイプ |
OrgUnitadd
新しい組織単位を作成し、新しい組織単位の ID を返します。
| 議論 | タイプ |
|---|---|
| 説明 | |
| orgtypeID | |
| parentID | |
| OrgUnitinheritedroles (省略可能) | |
| 戻り値の型 | タイプ |
| 新しいユニットの ID | パラメーター OrgUnitinheritedroles には、yes または no のいずれかの値があります。 |
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 (省略可能) | 整数 |
| 戻り値の型 | タイプ |
| 新しいロールの 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 のメンバーとサブ OrgUnit に割り当てるロールを提案します。
| 議論 | タイプ |
|---|---|
| OrgUnitID | |
| roleID | |
| durationType (省略可能) | 値 'free'、'hours'、および 'days' を含めることができます。 |
| durationLength | durationType が 'hours' または 'days' の場合は、ロールがユーザーに割り当てられている時間数または日数の整数値を含める必要があります。 |
| durationFixed | 'true' または 'false' は、ユーザーへのこのロールの割り当てが durationLength と等しいかどうかを示します。 |
| inheritThisRole | 'true' または 'false' は、ロールが基になるユニットに提案されているかどうかを示します。 |
taskadd
新しいタスクを作成し、新しいタスクの ID を返します。
| 議論 | タイプ |
|---|---|
| applicationID | |
| 説明 | 最大 254 文字のテキスト。 |
| taskname | 最大 254 文字のテキスト。 |
| tokenGroupID | |
| svroleID (省略可能) | この引数が存在しない場合は、現在のユーザーのスーパーバイザ ロールが使用されます。 |
| contextAdaptable (省略可能) | ["0","1","N","Y"] |
| underconstruction (省略可能) | ["0","1","N","Y"] |
| auditaction (省略可能) |
|
| auditalertmail (省略可能) | このアクセス許可に関するアラートが送信された電子メール アドレスは、監査担当者によって送信されます。 この引数が存在しない場合は、監査担当者の警告電子メール アドレスが使用されます。 |
| MaxRoles (省略可能) | 整数 |
| MaxUsers (省略可能) | 整数 |
| 戻り値の型 | 新しいタスクの ID。 |
taskadditask
2 つのタスクに互換性があることを示します。
| 議論 | タイプ |
|---|---|
| taskID | |
| taskID2 |
taskaddrole
タスクをロールに割り当てます。
| 議論 | タイプ |
|---|---|
| roleID | |
| taskID |
taskaddsupervisor
ユーザーをタスクの監督者にします。
| 議論 | タイプ |
|---|---|
| svroleID | 引数 userID も使用できます。 この場合、既定のスーパーバイザ ロールが選択されます。 既定のスーパーバイザ ロールには、__svrole のような名前の後に数字が続きます。 引数 userID は、下位互換性のために使用できます。 |
| taskID |
useradd
新しいユーザーを作成し、新しいユーザーの ID を返します。
| 議論 | タイプ |
|---|---|
| 説明 | |
| 別名 | |
| languageID |
|
| OrgUnitID | |
| enddate (省略可能) | 日付形式は 'YYYY-MM-DDThh:nn:ss" で、年、月、日のみが必要です。 たとえば、"2004-12-11" や "2004-11-28T08:00" は有効な値です。 |
| disabled (省略可能) |
|
| MaxPermissions (省略可能) | 整数 |
| MaxRoles (省略可能) | 整数 |
| 戻り値の型 | 新しいユーザーの ID。 |
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 システムに格納されている情報を取得できます。 各関数は、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 の フィルター で説明されている文字列含む単位を検索します。 この ID を省略すると、フィルターはユニットの説明に適用されます。 フィルターが指定されていない場合は、すべての表示単位が返されます。 |
徴収 |
| OrgUnitOrgUnits | OrgUnitID | 徴収 |
| OrgUnitparents | OrgUnitID | 徴収 |
| OrgUnitpropertyvalues | OrgUnitID | 徴収 |
| OrgUnitproptypes | 徴収 | |
| OrgUnitusers | OrgUnitID | 徴収 |
| OrgUnitproposedroles | OrgUnitID | 徴収 |
| OrgUnitroles | OrgUnitID | 徴収 |
| OrgUnitinheritedroles | OrgUnitID | 徴収 |
| OrgUnitsupervisors | OrgUnitID | 徴収 |
| OrgUnitinheritedsupervisors | OrgUnitID | 徴収 |
| OrgUnitsupervisorroles | OrgUnitID | 徴収 |
ロール情報
| 名前 | パラメーター | 戻り値の型 |
|---|---|---|
| role | 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 | ユーザー |
| users | filter (省略可能)、attributetypeid (省略可能) attributetypeid で指定された attributetype に含まれるユーザーを、フィルターで指定された文字列で検索します。 この ID を省略すると、フィルターはユーザーの既定のエイリアスに適用されます。 フィルターが指定されていない場合は、表示されているすべてのユーザーが返されます。 次に例を示します。
|
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 サーバーがあり、新しい顧客を作成する自動化されたスクリプトが必要です。 会社とその購入マネージャーに関する情報は、カスタマイズされた Web ページに入力されます。 すべての顧客は、ユニット顧客の下のユニットとしてモデルに表示されます。 購入マネージャーは、このユニットの監督者としてもメンバーです。 所有者に新しい顧客の名前で購入する権利を付与するロールが作成されます。
ただし、この顧客はアプリケーションに存在しません。 購入アプリケーションで新しい顧客アカウントを作成する特別な関数が ASI FunctionDispatch に実装されています。 各顧客には顧客の種類があります。
使用できる型は、FunctionDispatch 関数でも表示できます。 AA は、新しい顧客に適した種類を選択します。
購入特権を提示するロールとタスクを作成します。 実際の購入特権は、ASI によってファイル /customers/customer id/purchaseとして提示されます。 このファイルは、新しいタスクにリンクされている必要があります。
情報を収集する Active Server ページは次のようになります。
<%@ 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>
次のステップ
- BHOLD の概念ガイド
- BHOLD バージョン履歴 を する