Qualifizieren des Zugriffs mit Geschäftslogik in Skript

Verwenden Sie Geschäftsregelskripts, um Laufzeitlogik für die Zugriffsüberprüfung bereitzustellen. Weitere Informationen zu Geschäftsregeln finden Sie unter Geschäftsregeln.

Um einer Aufgabe eine Geschäftsregel zuzuweisen, legen Sie zuerst die BizRuleLanguage-Eigenschaft des IAzTask-Objekts fest, das die Aufgabe darstellt. Das Skript muss mit der Programmiersprache Visual Basic Scripting Edition (VBScript) oder JScript-Entwicklungssoftware geschrieben werden. Nachdem Sie die Skriptsprache angegeben haben, legen Sie die BizRule-Eigenschaft des IAzTask-Objekts mit einer Zeichenfolgendarstellung des Skripts fest.

Beim Überprüfen des Zugriffs auf einen Vorgang, der in einer Aufgabe enthalten ist, die über eine zugeordnete Geschäftsregel verfügt, muss die Anwendung zwei Arrays derselben Größe erstellen, die als varParameterNames - und varParameterValues-Parameter der AccessCheck-Methode eines IAzClientContext-Objekts übergeben werden sollen. Informationen zum Erstellen eines Clientkontexts finden Sie unter Einrichten eines Clientkontexts in Skript.

Die AccessCheck-Methode erstellt ein AzBizRuleContext-Objekt , das an das Geschäftsregelskript übergeben wird. Das Skript legt dann die BusinessRuleResult-Eigenschaft des AzBizRuleContext-Objekts fest. Der Wert True gibt an, dass der Zugriff gewährt wird, und der Wert False gibt an, dass der Zugriff verweigert wird.

Ein Geschäftsregelskript kann keinem IAzTask-Objekt zugewiesen werden, das in einem delegierten IAzScope-Objekt enthalten ist.

Das folgende Beispiel zeigt, wie Sie mithilfe eines Geschäftsregelskripts den Zugriff eines Clients auf einen Vorgang überprüfen. Im Beispiel wird davon ausgegangen, dass im Stammverzeichnis von Laufwerk C ein XML-Richtlinienspeicher mit dem Namen MyStore.xml vorhanden ist und dass dieser Speicher eine Anwendung namens Expense, eine Aufgabe namens Submit Expense und einen Vorgang namens UseFormControl enthält.

<%@ Language=VBScript %>
<%
'  Create the AzAuthorizationStore object.
Dim AzManStore
Set AzManStore = CreateObject("AzRoles.AzAuthorizationStore")

'  Initialize the authorization store.
AzManStore.Initialize 0, "msxml://C:\MyStore.xml"

'  Open the application object in the store.
Dim expenseApp
Set expenseApp = AzManStore.OpenApplication("Expense")

'  Create a client context.
Dim clientName
clientName = Request.ServerVariables("LOGON_USER")
Dim clientContext
Set clientContext = _
    expenseApp.InitializeClientContextFromName(clientName)

'  Create a business rule for the Submit Expense task.

'  Open the Submit Expense task.
Dim submitTask
Set submitTask = expenseApp.OpenTask("Submit Expense")

'  Set the business rule language to VBScript.
submitTask.BizRuleLanguage = "VBScript"

'  Create a string with the business rule code.
Dim newline
newline = chr(13)
Dim bizRuleString
bizRuleString = "Dim Amount" + newline _
         +"AzBizRuleContext.BusinessRuleResult = FALSE" + newline _
         +"Amount = AzBizRuleContext.GetParameter(""ExpAmount"")" _
   +newline _
   +"if Amount < 500 then AzBizRuleContext.BusinessRuleResult = TRUE"

'  Assign the business rule to the Submit Expense task.
submitTask.BizRule = bizRuleString
                
'  Save the task information to the store.
submitTask.Submit

'  Open the operation to check.
Dim formOperation
Set formOperation = expenseApp.OpenOperation("UseFormControl")

'  Get the ID of the operation.
Dim operationID
operationID = formOperation.OperationID

'  Set up arrays for operations and results.
Dim Operations(1)
Operations(0) = operationID
Dim Results

'  Set up business rule parameters.
Dim bizNames(1)
Dim bizValues(1)
bizNames(0) = "ExpAmount"
bizValues(0) = 100

'  Check access.
Results = clientContext.AccessCheck _
    ("UseFormControl", Empty, Operations, bizNames, bizValues)
 
%>