Partager via


Qualification de l’accès avec la logique métier en script

Utilisez des scripts de règle d’entreprise pour fournir une logique d’exécution pour la vérification de l’accès. Pour plus d’informations sur les règles d’entreprise, consultez Règles d’entreprise.

Pour affecter une règle d’entreprise à une tâche, définissez d’abord la propriété BizRuleLanguage de l’objet IAzTask qui représente la tâche. Le script doit être écrit à l’aide du langage de programmation VBScript (Visual Basic Scripting Edition) ou du logiciel de développement JScript. Après avoir spécifié la langue de script, définissez la propriété BizRule de l’objet IAzTask avec une représentation sous forme de chaîne du script.

Lors de la vérification de l’accès à une opération contenue dans une tâche qui a une règle d’entreprise associée, l’application doit créer deux tableaux de même taille à passer en tant que paramètres varParameterNames et varParameterValues de la méthode AccessCheck d’un objet IAzClientContext . Pour plus d’informations sur la création d’un contexte client, consultez Établissement d’un contexte client dans un script.

La méthode AccessCheck crée un objet AzBizRuleContext qui est passé au script de règle d’entreprise. Le script définit ensuite la propriété BusinessRuleResult de l’objet AzBizRuleContext . La valeur True indique que l’accès est accordé, et la valeur False indique que l’accès est refusé.

Un script de règle d’entreprise ne peut pas être affecté à un objet IAzTask contenu par un objet IAzScope délégué.

L’exemple suivant montre comment utiliser un script de règle d’entreprise pour case activée l’accès d’un client à une opération. L’exemple suppose qu’il existe un magasin de stratégies XML nommé MyStore.xml dans le répertoire racine du lecteur C, et que ce magasin contient une application nommée Expense, une tâche nommée Submit Expense et une opération nommée UseFormControl.

<%@ 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)
 
%>