2.1.1. Giriş#
Veri Depolama (Data Storage)#
System menu ortamının kurulması için PostgreSQL ve tercihe bağlı redis'in çalıştırılması gerekmektedir.
PostgreSQL docker bilgisine buradan ulaşabilirsiniz.
Redis docker bilgisine buradan ulaşabilirsiniz.
Uygulama Paketi (Instances)#
System menu docker instance'ına buradan ulaşabilirsiniz.
Dış Bağımlılıklar (External Dependencies)#
Security enabled durumda security instances kurulumu ihtiyacı olmaktadır. Kurulumun detaylarına buradan ulaşabilirsiniz.
Varsayılan Uygulama Parametreleri (Default Environment Variables)#
Değişken Adı | Değeri | Açıklama |
---|---|---|
DATA_INITIALIZER_ENABLED | true | Veri ilklendirmenin aktif/pasif yapılmasının sağlayan değişkendir. |
DATA_INITIALIZER_GIT_ENABLED | true | Veri ilklendirmesinin git üzerinden yapılıp yapılmayacağının bilgisidir. |
DATA_INITIALIZER_GIT_LABEL | master | Veri ilklendirmesinin yapılacağı branch bilgisidir. |
DATA_INITIALIZER_GIT_PATH | ${user.home}/.hvl-gradle-spring-plugin/data-initializer/hvl-system-menu | Veri ilklendirmesinin yapılacaği git path bilgisidir. |
DATA_INITIALIZER_RESOURCE_PATH | ${hvl.core.jdbc.initializer.git.path}/script/db/framework/system/scenario/menu/menu.scenario | Veri ilklendirmesi yapılacak kaynak senaryo dosyası bilgisidir. |
DB_SCHEMA | system | Uygulama verilerinin işlendiği RDMS schema bilgisidir. |
DB_SCHEMA_CREATE_ENABLED | true | Schema oluşturmanın aktif/pasif yapıldığı değişkendir. |
DDL_AUTO_TYPE | create | Veri ilklendirme strateji bilgisidir. (create, update vb.) |
LOGGING_CONFIG | \({spring.cloud.config.uri}/\)/default/framework()log4j2()instance()system()setting/log4j2.yml | Uygulama log4j konfigurasyon dosyası dizin bilgisidir. |
REDIS_CM_CACHE_PREFIX | hvl::sys::menu:: | Redis üzerinde tutulan cache prefix değeridir. |
REDIS_CM_TTL | 86400 | Redis üzerinde tutulan cache için saniye olarak TTL süresidir. |
REDIS_CM_VALUE_SERIALIZER | java | Redis üzerindeki cache bilgisinin serializer(java, binary) yönetiminin bilgisidir. |
SERVER_APP_NAME | system-menu-server | Uygulama isim bilgisidir. |
SERVER_DESCRIPTION | Hvl System Menu Server | Uygulama açıklama bilgisidir. |
SERVER_PORT | 9191 | Uygulamanın sunulduğu port bilgisidir. |
SWAGGER_DESCRIPTION | Havelsan system menu services info | Uygulamanın swagger açıklama bilgisidir. |
*Daha fazlası için Parametreler'e bakınız.
Veri ilklendirme (Data Initializer)#
- Menü öğelerinin mantıksal gruplamasını sağlayan 'Application Name' tanımlaması.
- Menü öğelerinin (Menu Item) tanımlanması.
- Menü öğelerinin yetkilerinin (Menu Item Authority) tanımlanması.
adımlarından oluşmaktadır.
- Application Name tanımlaması :
Application Name Ekleme SQL
INSERT INTO system.sys_app_name
VALUES (NEXTVAL('system.SYS_APP_NAME_SEQ'),'unknown', CURRENT_DATE, CURRENT_DATE, 'unknown', 'SYS_APP_NAME_UUID_DEFAULT', 0, 'DEFAULT desc', 'DEFAULT',
4);
INSERT INTO system.sys_app_name
VALUES (NEXTVAL('system.SYS_APP_NAME_SEQ'),'unknown', CURRENT_DATE, CURRENT_DATE, 'unknown', 'SYS_APP_NAME_UUID_PROCSYS', 0, 'PROCSYS desc', 'PROCSYS',
5);
( `default` application name'i menu management işlemlerinde kullanıldığı için silinmemeli)
- Menu Item tanımlanması :
Menu Item Ekleme SQL
INSERT INTO system.sys_menu_item (id, created_by, created_at, updated_at, updated_by, uuid, obj_version, deleted,
deleted_at, tenant, icon, label, menu_order, path, parent_id, app_name_id, path_type, path_target_type)
VALUES (NEXTVAL('SYSTEM.SYS_MENU_ITEM_SEQ'), 'unknown', CURRENT_DATE, CURRENT_DATE, 'unknown', 'MENU_KEYSYS_UUID_0000000000000000001', 0, 0, NULL, NULL,
'supervisor_account', 'menu_label_keysys', 1, '', NULL, (SELECT a.id FROM system.sys_app_name a WHERE a.uuid = 'SYS_APP_NAME_UUID_KEYSYS'),
1, NULL);
INSERT INTO system.sys_menu_item (id, created_by, created_at, updated_at, updated_by, uuid, obj_version, deleted,
deleted_at, tenant, icon, label, menu_order, path, parent_id, app_name_id, path_type, path_target_type)
VALUES (NEXTVAL('SYSTEM.SYS_MENU_ITEM_SEQ'), 'unknown', CURRENT_DATE, CURRENT_DATE, 'unknown', 'MENU_KEYSYS_UUID_0000000000000000002', 0, 0, NULL, NULL,
'pi pi-cog', 'menu_label_general_settings', 1, '',
(SELECT m.id FROM system.sys_menu_item m WHERE m.uuid = 'MENU_KEYSYS_UUID_0000000000000000001'),
(SELECT a.id FROM system.sys_app_name a WHERE a.uuid = 'SYS_APP_NAME_UUID_KEYSYS'),
1, NULL);
- Menu Item Authority tanımlanması :
Menu Item Authority Ekleme SQL
INSERT INTO system.sys_menu_item_authority (id, created_by, created_at, updated_at, updated_by, uuid, obj_version,
authority_code, menu_item_id)
VALUES (NEXTVAL('SYSTEM.SYS_MENU_ITEM_AUTHORITY_SEQ'), 'unknown', CURRENT_DATE, CURRENT_DATE, 'unknown', 'MENU_AUTH_KEYSYS_UUID_00000000000001', 0,
'default_authority', (SELECT m.id FROM system.sys_menu_item m WHERE m.uuid = 'MENU_KEYSYS_UUID_0000000000000000008'));
INSERT INTO system.sys_menu_item_authority (id, created_by, created_at, updated_at, updated_by, uuid, obj_version,
authority_code, menu_item_id)
VALUES (NEXTVAL('SYSTEM.SYS_MENU_ITEM_AUTHORITY_SEQ'), 'unknown', CURRENT_DATE, CURRENT_DATE, 'unknown', 'MENU_AUTH_KEYSYS_UUID_00000000000002', 0,
'keysys', (SELECT m.id FROM system.sys_menu_item m WHERE m.uuid = 'MENU_KEYSYS_UUID_0000000000000000009'));
Menu ağacının istenilen şekilde oluşması için dikkat edilmesi gereken kurallar şu şekildedir;
- Menü öğelerinin doğru sırada oluşması için; aynı seviyedeki öğelerin "menu_order" değerlerinin doğru sırada verilmesi gerekmektedir.
- "path, "path_type" ve "path_target_type" alanları; menü ağacının en altındaki sayfa öğeleri için doldurulmalıdır.
- Hiyerarşik yetkilendirmeye uygun bir yapı kurgulanmıştır. Örneğin; "manager" authority'sine sahip bir kullanıcı; authority alanı "manager" olan ve "manager:assigner" gibi alt kırılımlı bir yetki olan menü öğelerini görebilir.
- "path_type" alanı, menü öğesinin absolute ya da relative path olmasını ifade eder. "HvlMenuItemPathType" enum sınıfından veritabanı değer karşılıkları görülebilir.
- "path_target_type" alanı, absolute tipinde olan menü öğesine tıklanıldığında gerçekleştireceği davranışı ifade eder. Yani "href" HTML öğesinin "target" property'sine karşılık gelir. "HvlMenuItemPathTargetType" enum sınıfından veritabanı değerleri görülebilir.
- Absolute tipinde menu öğeleri, arayüzden eklenebilir, güncellenebilir, yetkileri tanımlanabilir ve label değerleri multilanguage olarak tanımlanabilir. Bunun dışındaki relative menu öğeleri, initial script ile tanımlanmalıdır.