auto_stories Bilgi Bankası chevron_right Work Flow chevron_right Makale

Flow İpuçları

FlowState 

FlowState akışla ilgili durumu gösteren kısımdır.  

  • FlowState 0 durumunda akış beklemededir. 
  • FlowState 1 durumunda akışın işlemde olduğunu ve son kullanıcının kararına göre olumlu olduğunu anlıyoruz.
  • FlowState 2 durumunda son kullanıcıya giden seçeneklerden olumsuz olanın seçildiğini gözlemleyebiliriz. 
  • FlowState 4 durumunda ise onay için gönderilen bildirinin “veya” ile bağlı birden fazla kişiye gittikten sonra biri onay veya red verince diğerleri adına sistemde işlem yapıldığını belirtir. 

 

FlowProses

FlowProses ilgili işlemlerin kodudur. Kodların açıklamaları bu şekildedir; 

  • a1 = Start
  • a2 = End
  • a4 = Formula
  • a7 = Create Document
  • a13 = Find User
  • a17 = Send Email
  • a22 = SubFlow
  • a23 = Send Approval
  • a26 = DbQuery

Onay Durumunu ve akış raporu için listede raporlanabilecek bir sorgu örneği aşağıdaki gibidir.

SELECT tableDetail.UserTableID,
tableDetail.DocNo,
tableDetail.CreateUser,
tableDetail.CreateDate,
tableDetail.Defination,

CASE WHEN MAX(FlowState)=1 THEN ‘Approved’
WHEN MAX(FlowState)=2 THEN ‘Rejected’
ELSE ‘Pending’ END AS FlowStatusFROM TABLO_ADI AS tableDetail WITH (NOLOCK)

LEFT JOIN XPODA_WORK_FLOWS on FlowDocumentID = UserTableID AND FlowProjectID = ProjectID 

WHERE FlowProses = 'a23' AND FlowState in (0,1,2) and FlowUserID!=’$PActiveUser$’

 

Eğer birden fazla kişinin onayına gittiği durumlar varsa durum alanı için select sonucunun kayıt kopyalamaması için group by ifadesi eklenebilir. Yukarıdaki örnekte bunun yerine Aktif kullanıcının onayından geçen kayıtlar sorguda filtrelenmiştir. FlowUserID kaldırılıp group by eklenirse tüm kullanıcıların onay durumu görünür. 

 

/*group by*/

GROUP BY tableDetail.UserTableID,
tableDetail.DocNo,
tableDetail.CreateUser,
tableDetail.CreateDate,
tableDetail.Defination


 

 

 

Birden fazla onay süreci için FlowItemText =’Yönetici Onayı’ gibi belirli bir onayın akış durum bilgisi görüntülenebilir. 
 

  • Akışın başlayıp başlamadığını kontrol etmek için FlowDocumentID ve FlowProjectID kayıtlarını çekebileceğimiz bir sorgu yazdığımızda sorgumuz sonucu gelen kayıtlar bize akışın var olduğunu ve başladığını göstermektedir. Örnek sorgu şu şekildedir.

 

SELECT CASE WHEN exists(

SELECT * FROM XPODA_WORK_FLOWS 

WHERE FlowDocumentID = '$PUserTableID' and FlowProjectID= TABLO_ADI.ProjectID)

THEN 0 ELSE 1 END

 

Not: Akış her zaman ProjectID ve UserTableID alanlarıyla birlikte kontrol edilmelidir. Her proje için 1 akış eklenebildiği için her formun akışını ayırt edebilmek için bu 2 alanı join sorgularında veya validation’larda birlikte kullanmak gerekir.

Not: Formdaki kayıtlı verinin akışını kontrol etmek için $P kullanabiliriz.

 

bulb-icon.png Listeleme yaparken sistem kayıtlarını görmemek için FlowUserID!=0 olarak filtrelenebilir. Sorguya FlowUserID!=0 eklenirse sadece kişiler listelenecek ve system pending görünmeyecektir.
bulb-icon.png

Akış elemanlarının özellikleri içerisinde yer alan Name alanı, ilgili elemanın FlowItemName nesne adını göstermektedir.