Ana içeriğe geç

5.1.3. Genişletilebilir Uygulama Paketi (Starter)#

RTool Report uygulamasında projeye özgü özelleştirme veya yeni özelliklerin eklenmesi ihtiyacı olabilir.

Starter paketi proje ihtiyaçlarınızı karşılayabilmeniz için RTool Report uygulamasını genişletebilme imkanı sağlamaktadır.

Aşağıdaki adımları uygulayarak projeye özelleştirilmiş RTool Report uygulamanızı geliştirmeye başlayabilirsiniz.

Bağımlılıklar#

Gradle Bağımlılıkları

dependencyManagement {
    imports {
        mavenBom "tr.com.havelsan.framework.report:hvl-report-parent"
    }
}

compile (
    [group: 'tr.com.havelsan.framework.report' , name: 'hvl-report-rtool-starter']
)

Mevcut özelliklerin aktifleştirilmesi#

Hvl report uygulamasına ait entity, repository, logic gibi katmanlarının spring context'ine dahil olması için aşağıdaki annotation'ı configuration dosyanıza eklemelisiniz.

Starter kullanımına ilişkin detaylı anlatıma buradan ulaşabilirsiniz.

Rapor ilklendirme#

Hazır raporların initializer ile ilklendirilmesi için file system, git ve yaml formatı tabanlı bir initializer mekanizması mevcuttur. Seçenekler aynı anda birbirini ezmeden kullanılabilir.

Uygulamanın kullanacağı çeşitli bilgiler ortam değişkenleri üzerinden yönetilir. Bu bilgiler arasında initalize tanımı da mevcuttur. Aşağıdaki tariflenen ortam değişkenleri ile initializer yapısı yönetilebilir:

  • REPORT_INITIALIZER_ENABLED parametresi ile; raporların uygulama başlangıcında otomatik yüklenip yüklenmeyeceği bilgisi verilir.
  • REPORT_INITIALIZER_GIT_ENABLED parametresi ile; belirlenen git reposunun altındaki dosya yolundaki raporların otomatik yüklenip yüklenmeyeceği bilgisi verilir.
  • REPORT_INITIALIZER_WORKING_DIR_PATH parametresi ile; yüklenecek raporların bulunduğu dosya yolu verilir.
  • DESTROY_APPLICATION_ON_REPORT_INITIALIZING_ERROR parametresi ile; uygulama ayaklanırken initialize aşamasında bi hata olması durumunda hatanın gözardı edilip edilmeyeceği yönetilir.
  • REPORT_INITIALIZER_AFTER_SHUTDOWN parametresi ile; rapor initialize işlemi yapan sunucunun initialize işleminden sonra kapanıp kapanmayacağı yönetilir.

Bu değişkenlere ek olarak; raporların çekileceği farklı repository'ler; aşağıda görülen formattaki ortam değişkenleri ile tanımlanabilir ve bu şekilde birden fazla kaynaktan gelen raporlar ilklendirilebilir.

Örneğin; "hvlinfra" isimli repository tanımının ortam değişkenleri aşağıdaki formatta olmalıdır:

  • HVL_REPORT_RTOOL_INITIALIZER_REPOSITORIES_HVLINFRA_IMPORTABLE_REPORT_RESOURCES_PATH: "./hvl-infra/script/jasper" (Verilen dosya yolundaki raporlar initialize edilir)
  • HVL_REPORT_RTOOL_INITIALIZER_REPOSITORIES_HVLINFRA_REPORT_IMPORTING_DEFS_FILE_NAME: "" (Initialize edilecek dosyalara kaynak olan yml dosyası ismi verilir)
  • HVL_REPORT_RTOOL_INITIALIZER_REPOSITORIES_HVLINFRA_FETCH_FROM_GIT: "true" (Repository'nin veri kaynaklarının git üzerinden çekilip çekilmeyeceği bilgisi verilir)
  • HVL_REPORT_RTOOL_INITIALIZER_REPOSITORIES_HVLINFRA_GIT_REPOSITORY_URI: "http://bitbucket.bulut.ai/scm/javalt/hvl-infra.git" (Git reposu bağlantı linki verilir)
  • HVL_REPORT_RTOOL_INITIALIZER_REPOSITORIES_HVLINFRA_GIT_REPOSITORY_BRANCH: "" (Git branch'i ismi verilir)
  • HVL_REPORT_RTOOL_INITIALIZER_REPOSITORIES_HVLINFRA_DEFAULT_DATA_SOURCE_KEY: "" (Repository'e tanımlanan veri kaynaklarından hangisinin default veri kaynağı olacağının bilgisi verilir)
  • HVL_REPORT_RTOOL_INITIALIZER_REPOSITORIES_HVLINFRA_DEFAULT_AUTHORITY_CODE: "default" (Repository'nin veri kaynaklarının default yetkisi tanımlanır)

Farklı senaryolar üzerinden kullanım örneklerini inceleyelim:

  1. Raporlar bir git repository'sinden initialize edilmek istenirse;

    • REPORT_INITIALIZER_ENABLED ve REPORT_INITIALIZER_GIT_ENABLED parametreleri true olmalıdır.
    • "hvlinfra" isimli repository için aşağıdaki formatta ortam değişkenleri oluşturulmalıdır.
      • HVL_REPORT_RTOOL_INITIALIZER_REPOSITORIES_HVLINFRA_FETCH_FROM_GIT: 'true'
      • HVL_REPORT_RTOOL_INITIALIZER_REPOSITORIES_HVLINFRA_GIT_REPOSITORY_URI: http://bitbucket.bulut.ai/scm/javalt/hvl-infra.git
      • HVL_REPORT_RTOOL_INITIALIZER_REPOSITORIES_HVLINFRA_GIT_REPOSITORY_BRANCH: 'master'
      • HVL_REPORT_RTOOL_INITIALIZER_REPOSITORIES_HVLINFRA_IMPORTABLE_REPORT_RESOURCES_PATH: './hvl-infra/script/jasper'
    • Git repository'sindeki dosya dizini örneğinde görüldüğü gibi; "oauth" klasörü, rapor grubunu ifade eder. Buna göre hiyerarşiye göre farklı rapor gruplarının altına farklı rapor tanımları yapılabilir.

    ÖNEMLİ: jrxml dosyasında verilen isim ile properties dil dosyalarına verilen isim aynı olmalıdır, ayrıca her dil için tek bir properties dosyası olmalıdır.

  2. Raporlar bir file system üzerinden initialize edilmek istenirse;

    • REPORT_INITIALIZER_ENABLED parametresi true olmalıdır.
    • REPORT_INITIALIZER_WORKING_DIR_PATH parametresi ile yüklenecek raporların bulunduğu dosya yolu verilmelidir.
  3. Raporlar git repository'ndeki bir yaml dosyası üzerinden initialize edilmek istenirse;

    • REPORT_INITIALIZER_ENABLED ve REPORT_INITIALIZER_GIT_ENABLED parametreleri true olmalıdır.
    • "hvlinfra" isimli repository için aşağıdaki formatta ortam değişkeni oluşturulmalıdır.

      • HVL_REPORT_RTOOL_INITIALIZER_REPOSITORIES_HVLINFRA_FETCH_FROM_GIT: 'true'
      • HVL_REPORT_RTOOL_INITIALIZER_REPOSITORIES_HVLINFRA_GIT_REPOSITORY_URI: http://bitbucket.bulut.ai/scm/javalt/hvl-infra.git
      • HVL_REPORT_RTOOL_INITIALIZER_REPOSITORIES_HVLINFRA_GIT_REPOSITORY_BRANCH: 'master'
      • HVL_REPORT_RTOOL_INITIALIZER_REPOSITORIES_HVLINFRA_REPORT_IMPORTING_DEFS_FILE_NAME = 'report-importing-defs.yml'
    • Aşağıda "report-importing-defs.yml" dosyası formatı görülmektedir.

    • Örnek yaml dosyasında görüldüğü gibi; rapor tanımının tüm özellikleri (dosya yolu, parametreler, yetkiler, vb.) formata uygun tanımlanmalıdır.
    • "importableReportDiscoveryEnabled" parametresi true olarak verilirse; yaml'ın bulunduğu dizinde hiyerarşik bir şekilde tüm jrxml'ler aranır ve kaydedilir. Bu parametrenin "false" olması durumunda ise sadece yaml'da belirtilen tanımlar kaydedilir.