понедельник, 9 июня 2014 г.

Hyperion Planning: Автоматизируем установку прав доступа

Написал небольшой скрипт для автоматизации установки прав доступа на элементы. Скрипт будет работать без перезапуска Hyperion Planning
Используем bash для получения данных и формирования SecFile.txt для утилиты ImportSecurity.cmd

 
Для начала создадим конф файл для установки прав доступа - access_mode.cfg :
once:1400:08.06.2014:Application1:Regional_1:READ
once:1800:09.06.2014:Application2:Regional_2:WRITE
 
Код скрипта, как обычно комментарии по ходу

#!/bin/bash

# Получаем данные из базы о текущем элементе для формирования SecFile
function extract() {

group=`$ORACLE_HOME/BIN/sqlplus -S -L $ora_user/$ora_pass@$oracle_sid << EOF | iconv -f utf-8 -t cp1251
set echo off
set timing off
set heading off
set linesize 3000
set verify off
set termout on
set pages 50000
SET FEEDBACK OFF

select * from (  
(select g.name || '|' || o.object_name || '|' || decode (a.flags, 0, 'MEMBER', 5, '@ICHILDREN', 6, '@ICHILDREN', 8, '@DESCENDANTS', 9, '@DESCENDANTS', 'ERROR') as "FLAGS" 

from $application.hsp_object o, $application.hsp_access_control a, $application.hsp_group c, h11.css_groups g where upper(o.object_name)=upper('$element_name') 
and o.object_id=a.object_id 
and a.user_id=c.group_id 
and c.sid=g.identity_id)
union all 
(select u.name || '|' || o.object_name || '|' || decode (a.flags, 0, 'MEMBER', 5, '@ICHILDREN', 6, '@ICHILDREN', 8, '@DESCENDANTS', 9, '@DESCENDANTS', 'ERROR') as "FLAGS" 
from $application.hsp_object o, $application.hsp_access_control a, $application.hsp_users d, h11.css_users u where upper(o.object_name)=upper('$element_name') 
and o.object_id=a.object_id 
and a.user_id=d.user_id 
and d.sid=u.identity_id) );
EOF
`

# Формируем SecFile из полученных данных
echo "$group" | sed -e '/^$/d' |while read count; do
    member=$(echo $count | awk -F"|" {'print $1'} )
    status=$(echo $count | awk -F"|" {'print $3'} )
    echo "\"$member\",\"$element_name\",$access_mode,$status"  >> SecFile.txt
done
}

# Get Current Time
current_time=$(date +'%H%M')
current_date=$(date +'%d.%m.%y')
current_day="$(echo $current_date | awk -F'.' {'print $1'} )"
current_month="$(echo $current_date | awk -F'.' {'print $2'} )"

# получаем путь до скрипта
path=$(dirname $(readlink -e "$0"))

# переходим в папку с утилитами Hyperion Planning
cd $(cygpath -u "E:\Oracle\Middleware\user_projects\epmsystem1\Planning\planning1")

# Чистим файл
:> SecFile.txt

# Парсим конф файл, проверяем даты запуска
cat "$path"/access_mode.cfg | grep -v "#" | while read element; do
    operation_type="$(echo $element | awk -F':' '{print $1}')"
    launch_time="$(echo $element | awk -F':' '{print $2}')"
    ###
    launch_date="$(echo $element | awk -F':' '{print $3}')"
    launch_day="$(echo $launch_date | awk -F'.' '{print $1}')"
    launch_month="$(echo $launch_date | awk -F'.' '{print $2}')"
    ###
    application="$(echo $element | awk -F':' '{print $4}')"
    element_name="$(echo $element | awk -F':' '{print $5}')"
    access_mode="$(echo $element | awk -F':' '{print $6}')"

            if [ "$current_time" -eq "$launch_time" ];then
                if [ "$current_day" -eq "$launch_day" ];then
                        if [ "$launch_month" -eq "$current_month" ];then
                            extract
# Запускаем импорт Security из заранее сформированного файла

                            ./ImportSecurity.cmd -f:"pass.txt" "$application, hyperion" 
                        fi
                else
                    echo "No Tasks for Date: $current_day" 
                fi
            else
                echo "No Tasks for Time: $current_time" 
            fi
done                      

Если статья была вам полезна - кликните на баннер или кнопку Donate :)

Популярные сообщения