Tüm projelerde kaynak kullanımı ve süreç performansını izlemek kritik öneme sahiptir. Özellikle RPA (Robotik Süreç Otomasyonu) projelerinde, süreçlerin nasıl çalıştığını ve kaynakların nasıl kullanıldığını anlamak için detaylı raporlamalara ihtiyaç duyulur. Bu yazıda, UiPath Orchestrator veri tabanından T-SQL sorguları kullanarak önemli metrikleri nasıl çıkarabileceğimizi ve farklı senaryolarda ne tür bilgiler elde edebileceğimizi ele alacağız.
Not: Aşağıdaki sorguları çalıştırabilmek için:
- Orchestrator’ın On-Premise olarak kurulmuş olması,
- Veri tabanının MSSQL üzerinde yapılandırılmış olması gereklidir.
Eğer On-Premise kurulumunuz yoksa, Orchestrator’ı bulut tabanlı (Cloud) olarak kullanıyorsanız; ihtiyaç duyduğunuz verileri elde etmek için Orchestrator’ın REST API‘ını kullanabilirsiniz. API üzerinden süreçler, robotlar ve diğer kaynaklar hakkında bilgi alabilirsiniz. Bununla ilgili de ayrı bir yazı ileride paylaşıyor olacağım.
Ayrıca, UiPath’in Insights ürününü kullanarak benzer bilgilere erişebilirsiniz.
Raporlama İhtiyaçları ve Orchestrator
UiPath Orchestrator, robotların ve süreçlerin yönetimini sağlayan merkezi bir platformdur. Ancak, bazen arayüzün sunduğu raporlama imkanları ihtiyaçlarımızı tam olarak karşılamayabilir. Örneğin, bir sürecin kaç kez çalıştığını, toplam çalışma süresini, maksimum, minimum ve ortalama çalışma sürelerini detaylı bir şekilde görmek isteyebilirsiniz. Bu bilgiler, süreçlerin performansını değerlendirmek, robotların doluluk oranlarını ve ne kapasitede çalıştığını görmek, iyileştirme alanlarını belirlemek ve ne zaman yeni bir robota ihtiyacınızın olacağını analiz edebilmek gibi ihtiyaçlar için de düzenli olarak bu raporları inceliyor olmak önemlidir.
Veri Tabanından Raporların Elde Edilmesi
Bu tür detaylı verileri elde etmek için Orchestrator’ın veritabanına doğrudan T-SQL sorguları yazabiliriz. Örneğin, bir sürecin robotlarda toplamda kaç saat çalıştığını, en uzun çalışmasının ne kadar sürdüğünü tespit etmeye çalıştığımızı düşünelim. Aşağıdaki gibi bir tablo oluşturabiliriz:

Bu tabloyu oluşturmak için aşağıdaki sorgu kullanılabilir:
SELECT R.Name AS [Process Adı], COUNT(*) AS [Çalışma Sayısı], SUM(DATEDIFF(second, J.StartTime, J.EndTime)) / 3600.0 AS [Toplam Çalışma Süresi (Saat)], MAX(DATEDIFF(second, J.StartTime, J.EndTime)) / 3600.0 AS [Maksimum Çalışma Süresi (Saat)], MIN(DATEDIFF(second, J.StartTime, J.EndTime)) / 3600.0 AS [Minimum Çalışma Süresi (Saat)], AVG(DATEDIFF(second, J.StartTime, J.EndTime)) / 3600.0 AS [Ortalama Çalışma Süresi (Saat)] FROM dbo.Jobs J INNER JOIN dbo.Releases R ON J.ReleaseId = R.Id WHERE J.State= '2' AND J.StartTime IS NOT NULL AND J.EndTime IS NOT NULL AND J.StartTime >= DATEADD(day, -30, GETDATE()) GROUP BY R.Name HAVING COUNT(*) >= 1 ORDER BY [Process Adı];
Yukarıdaki tablo geçtiğimiz 30 gün içerisinde başarılı şekilde sonlanmış süreçlerin verilerini bize döndürecektir. Bu tabloyu ve sorguyu ihtiyaçlarımıza göre şekillendirebiliriz.
- Belirli Bir Tarih Aralığında Çalışan Süreçlerin Analizi
Eğer sadece belirli bir tarih aralığındaki verileri analiz etmek istiyorsak, sorgumuza bir tarih filtresi ekleyebiliriz:
WHERE J.StartTime >= '2023-01-01' AND J.EndTime <= '2023-12-31' AND J.StartTime IS NOT NULL AND J.EndTime IS NOT NULL
Bu şekilde, 2023 yılı içerisindeki süreçleri analiz edebiliriz.
- Robot Bazlı Kullanım Analizi
Hangi robotların daha yoğun kullanıldığını görmek için sorguyu robotlara göre gruplandırabiliriz:
Çıktı:

Sorgu:
SELECT Rbt.Name AS [Robot Adı], COUNT(*) AS [Çalışma Sayısı], SUM(DATEDIFF(second, J.StartTime, J.EndTime)) / 3600.0 AS [Toplam Çalışma Süresi (Saat)] FROM dbo.Jobs J INNER JOIN dbo.Robots Rbt ON J.RobotId = Rbt.Id WHERE J.StartTime IS NOT NULL AND J.EndTime IS NOT NULL GROUP BY Rbt.Name ORDER BY [Çalışma Sayısı] DESC;
- Süreçlerin Başarısızlık Oranları
Süreçlerin başarısız olma oranlarını analiz etmek için aşağıdaki sorguyu kullanabiliriz:
Çıktı:

Sorgu:
SELECT R.Name AS [Process Adı], COUNT(*) AS [Toplam İş Sayısı], SUM(CASE WHEN J.State = 'Successful' THEN 1 ELSE 0 END) AS [Başarılı İş Sayısı], SUM(CASE WHEN J.State = 'Faulted' THEN 1 ELSE 0 END) AS [Hatalı İş Sayısı], (CAST(SUM(CASE WHEN J.State = 'Faulted' THEN 1 ELSE 0 END) AS FLOAT) / COUNT(*)) * 100 AS [Başarısızlık Oranı (%)] FROM dbo.Jobs J INNER JOIN dbo.Releases R ON J.ReleaseId = R.Id GROUP BY R.Name ORDER BY [Başarısızlık Oranı (%)] DESC;
Bu sorgu, her bir sürecin toplam çalışma sayısını, başarılı ve hatalı sonlanan süreç sayılarını ve yüzde olarak başarısızlık oranını gösterir.
- Zaman Bazlı Performans Analizi
Süreçlerin belirli zaman dilimlerinde nasıl performans gösterdiğini analiz etmek için, tarih ve saat bazlı gruplamalar yapabiliriz. Aşağıdaki tabloda saat kaçta, hangi süreç, hangi robotta, kaç kere çalışmış bunu gözlemleyebiliyoruz.
Çıktı:

Sorgu:
SELECT DATEPART(hour, J.StartTime) AS [Saat], R.Name AS [Process Adı], Rbt.Name AS [Robot Adı], COUNT(*) AS [Çalışma Sayısı] FROM dbo.Jobs J INNER JOIN dbo.Releases R ON J.ReleaseId = R.Id INNER JOIN dbo.Robots Rbt ON J.RobotId = Rbt.Id WHERE J.StartTime IS NOT NULL GROUP BY DATEPART(hour, J.StartTime), R.Name, Rbt.Name ORDER BY [Saat], [Process Adı], [Robot Adı];
Bu sorgu, her bir sürecin günün hangi saatlerinde ne sıklıkla çalıştığını gösterir. Böylece yoğun saatleri belirleyebilir ve kaynak planlaması yapabiliriz.
Sonuç olarak,
UiPath Orchestrator veri tabanına doğrudan erişim sağlayarak, ihtiyaç duyduğumuz detaylı veri raporları elde edebiliriz. Bu tip sorgular ile analizler yapabilir, süreçlerin performansını ve kaynak kullanımını etkin bir şekilde izleyebiliriz. Bu sayede, süreç iyileştirme fırsatlarını belirleyebilir ve RPA yatırımlarımızdan maksimum verim alabiliriz.
Bu yazıda genel olarak süreçlerin çalışma adedi ve süreleri temelinde bir raporlama yaklaşımını ele aldık. İlerleyen yazılarda, işlenen veri üzerinden raporlama yapma yöntemlerini ve aynı işlemlerin Orchestrator API’ı kullanılarak nasıl gerçekleştirilebileceğini detaylandıracağım.
Umarım faydalı olmuştur.
Bir sonraki yazıda görüşmek dileğiyle. 😊







Leave a comment