private void executeScript(ScriptExecutionPolicyActionType action, EvaluatedPolicyRule rule, ModelContext<?> context,
Task task, OperationResult parentResult, ExecuteScriptType executeScriptBean) {
OperationResult result = parentResult.createSubresult(EXECUTE_SCRIPT_OPERATION);
try {
Map<String, Object> initialVariables = createInitialVariables(action, rule, context);
if (executeScriptBean.getInput() == null && context.getFocusContext() != null) {
PrismObject objectAny = ((LensFocusContext) context.getFocusContext()).getObjectAny();
if (objectAny != null) {
ValueListType input = new ValueListType();
input.getValue().add(objectAny.getValue().clone());
executeScriptBean.setInput(input);
}
}
scriptingExpressionEvaluator.evaluateExpression(executeScriptBean, initialVariables, false, task, result);
} catch (ScriptExecutionException | RuntimeException e) {
result.recordFatalError("Couldn't execute script policy action: " + e.getMessage(), e);
LoggingUtils.logUnexpectedException(LOGGER, "Couldn't execute script with id={} in scriptExecution policy action '{}' (rule '{}'): {}",
e, action.getId(), action.getName(), rule.getName(), e.getMessage());
} finally {
result.computeStatusIfUnknown();
}
}