Qualifizieren des Zugriffs mit Geschäftslogik in Skripts

Verwenden Sie Geschäftsregelskripts, um Laufzeitlogik zum Überprüfen des Zugriffs bereitzustellen. Weitere Informationen zu Geschäftsregeln finden Sie unter Business Rules.

Um einer Aufgabe eine Geschäftsregel zuzuweisen, legen Sie zunächst 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, der eine Geschäftsregel zugeordnet ist, muss die Anwendung zwei Arrays derselben Größe erstellen, die als varParameterNames- und varParameterValues-Parameter der AccessCheck-Methode eines IAzClientContext-Objekts übergeben werden. 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 die Verwendung eines Geschäftsregelskripts, um den Zugriff eines Clients auf einen Vorgang zu überprüfen. Im Beispiel wird davon ausgegangen, dass im Stammverzeichnis von Laufwerk C ein vorhandener XML-Richtlinienspeicher mit dem Namen MyStore.xml vorhanden ist und dass dieser Speicher eine Anwendung mit dem Namen Expense, eine Aufgabe mit dem Namen 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)
 
%>