Qualificando o acesso com lógica de negócios no script
Use scripts de regra de negócios para fornecer lógica de tempo de execução para verificar o acesso. Para obter mais informações sobre regras de negócios, consulte Regras de negócios.
Para atribuir uma regra de negócios a uma tarefa, primeiro defina a propriedade BizRuleLanguage do objeto IAzTask que representa a tarefa. O script deve ser escrito usando a linguagem de programação VBScript (Visual Basic Scripting Edition) ou o software de desenvolvimento JScript. Depois de especificar a linguagem de script, defina a propriedade BizRule do objeto IAzTask com uma representação de cadeia de caracteres do script.
Ao verificar o acesso para uma operação contida por uma tarefa que tenha uma regra de negócios associada, o aplicativo deve criar duas matrizes do mesmo tamanho para serem passadas como os parâmetros varParameterNames e varParameterValues do método AccessCheck de um objeto IAzClientContext . Para obter informações sobre como criar um contexto de cliente, consulte Estabelecendo um contexto de cliente no script.
O método AccessCheck cria um objeto AzBizRuleContext que é passado para o script de regra de negócios. Em seguida, o script define a propriedade BusinessRuleResult do objeto AzBizRuleContext . Um valor true indica que o acesso é concedido e um valor de False indica que o acesso foi negado.
Um script de regra de negócios não pode ser atribuído a um objeto IAzTask contido por um objeto IAzScope delegado.
O exemplo a seguir mostra como usar um script de regra de negócios para marcar o acesso de um cliente a uma operação. O exemplo pressupõe que haja um repositório de políticas XML existente chamado MyStore.xml no diretório raiz da unidade C e que esse repositório contenha um aplicativo chamado Expense, uma tarefa chamada Enviar Despesas e uma operação chamada 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)
%>