26. Yönetim & RBAC (Administration & RBAC)

Workingflow, dinamik, veritabanı güdümlü bir Rol Tabanlı Erişim Kontrolü (RBAC - Role-Based Access Control) sistemi kullanır. Koda sabitlenmiş (hardcoded) rol kontrollerinin aksine, tüm yetkilendirme kuralları veritabanında saklanır ve çalışma zamanında (runtime) yönetici ekranları aracılığıyla değiştirilebilir — uygulamayı yeniden başlatmaya gerek yoktur.

Bu rehber, güvenlik modelini anlamanıza, en iyi uygulamaları oluşturmanıza ve yaygın yönetimsel sorunları gidermenize yardımcı olacaktır.

Güvenlik Mimarisine Genel Bakış

Workingflow, güvenliği beş farklı katmanda değerlendirir. Bir isteğin başarılı olması için geçerli tüm katmanları geçmesi gerekir.

┌──────────────────────────────────────────────┐
│ Katman 1: Kimlik Doğrulama (Authentication)  │
│ - Spring Security form girişi                │
│ - CSRF, XSS, Tıklama Sahtekarlığı koruması   │
└──────────────────────────────────────────────┘
                    ↓
┌──────────────────────────────────────────────┐
│ Katman 2: Sayfa Yetkilendirmesi (Rol-Sayfa)  │
│ - URL tabanlı: bu rol /yol'a erişebilir mi?  │
│ - Rol-Sayfa Yönetimi ekranından ayarlanır    │
└──────────────────────────────────────────────┘
                    ↓
┌──────────────────────────────────────────────┐
│ Katman 3: Arayüz Öğesi Yetkilendirmesi       │
│ - Sayfa Öğesi tabanlı: bu rol düğmeyi görür mü?│
│ - Rol-Sayfa Öğesi ekranından ayarlanır       │
└──────────────────────────────────────────────┘
                    ↓
┌──────────────────────────────────────────────┐
│ Katman 4: İş Akışı Başlatma Yetkisi          │
│ - Süreç-Rol: bu rol iş akışını başlatabilir mi?│
│ - Süreç Rolleri ekranından ayarlanır         │
└──────────────────────────────────────────────┘
                    ↓
┌──────────────────────────────────────────────┐
│ Katman 5: Görev Yetkilendirmesi              │
│ - Atanan kişi/aday grup doğrulaması          │
│ - BPMN atama kuralları tarafından yönetilir  │
└──────────────────────────────────────────────┘

Yöneticiler İçin En İyi Uygulamalar (Best Practices)

  1. Rolleri İş Fonksiyonuna Göre Tasarlayın: Her bireysel kullanıcı için bir rol oluşturmayın. ROLE_HR_MANAGER (İK Yöneticisi), ROLE_IT_SUPPORT (BT Destek) veya ROLE_FINANCE_CLERK (Finans Memuru) gibi roller oluşturun. Roller yalnızca rastgele metin etiketleridir—siz onları sayfalara ve süreçlere eşleyene kadar (map) koda sabitlenmiş (hardcoded) hiçbir anlamları yoktur.
  2. Sayfa Koruması İlk Savunma Hattıdır: URL erişimini tamamen engellemek için Rol-Sayfa Yönetimini kullanın. Bir kullanıcının /workflows/list sayfasına erişimi yoksa, URL'yi tahmin etmeye çalışsa bile 403 Yasak (Forbidden) hatası alır.
  3. Ayrıntılı UI Kontrolü için Sayfa Öğelerini (Page Objects) Kullanın: Bir sayfadaki belirli düğmeleri (buttons) gizlemek için Rol-Sayfa Öğesi Yönetimini kullanın. Örneğin, tüm yöneticilere süreç örnekleri sayfasına erişim verin, ancak "Süreci Durdur" (Stop Instance) düğmesini yalnızca Üst Düzey Yöneticilerin görmesini sağlamak için instance.stop Sayfa Öğesini kullanın.

Yaygın Yönetimsel İş Akışları

1. Yeni Bir Departmanı Sisteme Dahil Etme

Yeni bir ekip (örneğin Pazarlama) Workingflow'u kullanmaya başladığında, şu sırayı izleyin:

  1. Rol Yönetimi (Role Management)'ne gidin ve ROLE_MARKETING rolünü oluşturun.
  2. Rol-Sayfa Yönetimi (Role-Page Management)'ne gidin ve ROLE_MARKETING rolüne temel sayfalara (/workflows/list, /tasks/my, /instances/my-active) erişim verin.
  3. Kullanıcı Yönetimi (User Management)'ne gidin ve ROLE_MARKETING rolünü yeni çalışanlara atayın (map).
  4. Süreç Rolleri (Process Roles)'ne gidin ve ROLE_MARKETING rolüne "Pazarlama Kampanyası Onayı" iş akışını başlatma izni verin.

2. Sorun Giderme: "İş akışını göremiyorum!"

Bir kullanıcı "İş Akışı Başlat" (Start Workflow) listesinde belirli bir iş akışını göremediğinden şikayet ederse, şu üç şeyi kontrol edin:

  • Kontrol 1: Gerçekten doğru role sahipler mi? (Kullanıcı-Rol Yönetimi bölümünden doğrulayın)
  • Kontrol 2: Rollerinin /workflows/list ve /workflows/{id}/start sayfalarına erişimi var mı? (Rol-Sayfa Yönetimi bölümünden doğrulayın)
  • Kontrol 3: İş akışı açıkça onların rolüne atanmış mı? (Süreç Rolleri bölümünden doğrulayın). Not: Bir iş akışına atanmış sıfır rol varsa, hiç kimse onu başlatamaz!

3. Sistem Sağlığını İzleme

Bir yönetici olarak, günlük/haftalık rutininiz motorun (engine) sağlığını kontrol etmeyi içermelidir:

  • Motor Yöneticisi (Engine Admin - /admin/engine): Sıkışmış Görevleri (Stuck Tasks) kontrol edin. Javascript'inizdeki bir yazım hatası nedeniyle bir Script Görevi (Script Task) başarısız olursa, görev duraklatılır ve burada görünür. BPMN betiğini düzeltebilir ve doğrudan bu konsoldan "Yeniden Dene" (Retry) düğmesine tıklayabilirsiniz. Kalıcı olarak başarısız olan arka plan görevleri için Ölü Mektup İşlerini (Deadletter Jobs) de izlemelisiniz.
  • Hata Günlükleri (Error Logs - /admin/error-logs): Yakalanmayan (unhandled) Java istisnalarını (exceptions) inceleyin. Akıllı Özet (Smart Summary) özelliği, StackTrace'i otomatik olarak tarayacak ve çökmeye neden olan eksik BPMN değişkenini veya tam kod satırını belirlemeye çalışarak size saatlerce süren hata ayıklama süresinden tasarruf ettirecektir.

Yönetici Ekranları Başvurusu

  • Kullanıcı Yönetimi (/admin/users): Kullanıcı hesaplarını arayın, etkinleştirin, devre dışı bırakın veya silin. (Devre dışı bırakılmış kullanıcılar oturum açamaz).
  • Rol Yönetimi (/admin/roles): Rastgele rol etiketleri oluşturun ve silin.
  • Kullanıcı-Rol Ataması (/admin/user-role): Kullanıcılara roller atayın. Bir kullanıcının geçerli (effective) izinleri, atanan tüm rollerinin birleşimidir.
  • Rol-Sayfa Yönetimi (/admin/role-page): Rolleri belirli URL uç noktalarına eşleyin (map).
  • Rol-Sayfa Öğesi Yönetimi (/admin/role-pageobject): Rolleri belirli UI öğelerine (düğmeler gibi) eşleyin.
  • Süreç Rolleri (/admin/process-roles): Hangi rollerin belirli iş akışlarını başlatmasına izin verileceğini kontrol edin.
  • Sistem Ayarları (/admin/settings): E-posta dilini (en veya tr) ve e-posta gönderen görünen adlarını (display names) yapılandırın.
  • HTTP Bağlayıcıları (/admin/connectors): Hizmet Görevleri (Service Tasks) için dış API entegrasyonlarını yönetin.
  • Etiket Yönetimi (/admin/tags): İş akışlarını kategorize etmek için renkli rozetler (badges) oluşturun.
  • API Anahtarları (/admin/api-keys): REST API erişimi için wf_ önekli belirteçler (tokens) oluşturun ve iptal edin.
  • Zamanlanmış İş Akışları (/admin/schedules): İş akışlarını otomatik olarak tetikleyen arka plan cron işlerini yönetin.