Ana içeriğe geç

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)#

  1. Menü öğelerinin mantıksal gruplamasını sağlayan 'Application Name' tanımlaması.
  2. Menü öğelerinin (Menu Item) tanımlanması.
  3. 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.