Поделиться через


Подходящий доступ с помощью бизнес-логики в скрипте

Используйте скрипты бизнес-правил, чтобы предоставить логику времени выполнения для проверки доступа. Дополнительные сведения о бизнес-правилах см. в разделе Бизнес-правила.

Чтобы назначить бизнес-правило задаче, сначала задайте свойство BizRuleLanguage объекта IAzTask , представляющего задачу. Скрипт должен быть написан с помощью языка программирования Visual Basic Scripting Edition (VBScript) или программного обеспечения разработки JScript. После указания языка скрипта задайте свойство BizRule объекта IAzTask со строковым представлением скрипта.

При проверке доступа для операции, содержащейся в задаче с связанным бизнес-правилом, приложение должно создать два массива одинакового размера, передаваемых в качестве параметров varParameterNames и varParameterValues метода AccessCheck объекта IAzClientContext . Сведения о создании контекста клиента см. в статье Создание контекста клиента в скрипте.

Метод AccessCheck создает объект AzBizRuleContext , который передается в скрипт бизнес-правила. Затем скрипт задает свойство BusinessRuleResult объекта AzBizRuleContext . Значение True указывает, что доступ предоставлен, а значение False указывает, что доступ запрещен.

Скрипт бизнес-правила не может быть назначен объекту IAzTask , который содержится в делегированном объекте IAzScope .

В следующем примере показано, как использовать скрипт бизнес-правила для проверка доступа клиента к операции. В примере предполагается, что в корневом каталоге диска C имеется хранилище политик XML с именем MyStore.xml и что это хранилище содержит приложение Expense, задачу с именем Submit Expense и операцию с именем 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)
 
%>