İş akışları, tasarımınız içerisinde bulunan öğelerin bir iş içerisinde bulunabileceği durumları gösterir. İş Akışı bir öğenin aktörler arasındaki dolaşımı esnasında izleyebileceği adımların bir araya gelmesidir. Xpoda üzerinde tasarlamış olduğunuz akışları başlattığınız durumlarda, kişinin onayına sorulan aşamalar bildirim çekmecesinde kullanıcıyı(onaya giden kişiyi) beklemektedir. Bu bildirim çekmecesi üzerinden akışınızın durumunu yönetebilir, akışın bir sonraki adımlarına geçmesi için onay veya red işlemlerini açıklamalarıyla birlikte gerçekleştirebilirsiniz.
Akış şeması üzerinden Send To Approval aracını kullandığınız anda ilgili kullanıcının client ekranındaki bildirim çekmecesine bir bildirim düşer aynı zamanda sistemde kullanıcıya ait bir mail ataması yapıldıysa o mail adresine içerik(akış içerisinde yazmış olduğunuz mail içeriği) gitmektedir.
Kullanıcıya mail tanımlaması Client ara yüzünden yapılmaktadır. Sisteme kullanıcı tanımlama ekranında yer alan mail alanı kullanıcının mail adresiyle doldurulur.
Mail adresine gelen akış maili aşağıdaki gibidir.
Gelen mail içeriğinde yer alan linke tıklayarak ilgili akışın başlatıldığı sayfaya gidebilir. Buradan akışınızın durumunu yönetebilirsiniz.
Bu yapıyı kullanmak istemediğiniz durumlarda gelen mail içerisinden de akışı onaylayıp reddedebilirsiniz.
Şimdi gelin mail üzerinden akışı birlikte yönetelim.
Bu örnek için 2 adet form sayfasına ihtiyacım var, bunlardan ilki akışın başladığı form sayfası bir diğeri ise akışın durumunun yönetildiği form sayfası.
Akışın başladığı form sayfası olarak İzin Talep Formu adında bir form tasarımı yapılır.
TABLENAME: IZINTALEPFORMU
Bu form sayfasında izin kullanmak isteyen kullanıcı Personel alanından kendisini seçecek ve ardından ilgili alanları doldurarak Kaydet ve Onaya Gönder butonuna basarak izin talebinde bulunmaktadır.
Kaydet ve Onaya gönder butonu içerisine iki adet aksiyon eklenmelidir. Öncelikle işlemin kaydedilmesi için Save, ardından akışın başlayabilmesi için Start Flow aksiyonu kullanılmalıdır.
Not: Save aksiyonundan sonra tüm alanlar temizleneceği için akış hangi ID üzerinden başlayacağını bilemeyecektir. Bu nedenle form sayfasının özelliklerinde yer alan Do Not Refresh After Save özelliği Yes olarak seçilmelidir ki akışın başlayabileceği bir ID değeri form sayfasında bulunsun.
Bu özellik açık değilse onaya gönder butonunda alacağınız hata aşağıdaki gibi görünecektir.
Bu sayfada işlemler tamamlandıktan sonra onay mekanizmasının çalışması için bir form sayfası daha açılır ve bu form sayfasına aşağıdaki gibi alanlar eklenir.
Bu form sayfasında Search parametresi kullanılarak akışın bilgilerini içeren ProjectID, UserID, UserTableID bu form sayfasına link üzerinden gönderilecektir, o nedenle ilgili alanlar eklenir.
Daha sonra bu(ProjectID, UserID, UserTableID) bilgilerin karşılığındaki FlowunID sinin basılacağı Akış ID alanı oluşturulur, akabinde Red ve Onay durumlarının tutulacağı alan olarak Kontrol alanı form sayfasına eklenmiştir.
Formun son görüntüsü
UID - UserID ve ProjectID' içerisine girilen değerler değiştiğinde bu üçüne denk gelen akışın ID bilgisinin bulunması için ilgili alanlara sorgu yazılması gerekmektedir. PID alanı için aksiyon tanımlamasıyla işe başlanır.
Değer değiştiğinde- Değer güncelleme aksiyonu ile AkisID alanı aşağıdaki sorgu ile güncellenir.
SELECT TOP 1 * FROM XPODA_WORK_FLOWS
WHERE FlowProjectID = '$PPID$' AND
FlowDocumentID = '$PUID$' AND
FlowState = 0 AND
FlowUserID='$PUserID$'
Bu aksiyonun Run Condition alanına gelinerek ilgili tüm alanlar doldurulduktan sonra güncellenmesi sağlanır. PID,UID ve UserID alanlarının tamamı dolmadan bu aksiyon çalışmayacaktır.
SELECT CASE WHEN '$PUID$' = '' OR '$PPID$' = '' OR '$PUserID$' = '' THEN 0 ELSE 1 END
Aynı aksiyon kopyalanarak UID ve UserID alanlarına da eklenir.
Form işlemleri bittikten sonra Flow kısmına geçiş yapılır
Akış şemasına Find User ve Send Approval akış elemanları eklenir.
Find User alanına onaya gidecek kişi yada kişilerin bilgisi yazılmalıdır.
Bu örnek için tek bir kullanıcının onayına gönderilecektir ve onaya gidecek kişinin sistemdeki ID değeri 26'dır. Buna göre Find User elemanı içerisine
SELECT 26
ifadesi yazılır.
Document elemanına tıklanarak Document alanından IzınTalepFormu seçilir. İzin talep formunda yer alan kaydet ve onaya gönder butonuna Start Flow aksiyonu verildiği için bu sekmede yer alan Auto Start seçeneği No olarak seçilmelidir.
İzinler form sayfasına link üzerinden değer gönderileceği için öncelikle İzinler Form sayfasına gidilerek bir Public Form yaratılır.
Create Public Link butonuna basıldığında aşağıdaki gibi bir pop-up sayfası açılacaktır.
Bu sayfa içerisinde Client kullanıcılarından birinin username ve password bilgileri yazılıp altta yer alan Create butonuna tıklanılır. Link alanında bir public link oluşturulacaktır, oluşturulan link kopyalanır.
Flow alanına geri dönülerek bir Nesne oluşturulur. Bu nesne içerisinde Onay ve Red durumları için Link oluşturulacaktır.
Sorgu sihirbazına tıklanarak Linkler için sorgu oluşturulur.
SELECT
CONCAT('https://xpodanew.xpodacloud.com//Forms/DisplayForms?fm=Z2s4Y25odGlsMmRSUVcwUDJmN3VKSGxrZ3FoUTI5bjF4ODZ3bWR2V1J4ZnRPZkJHZzNjdGdWUGdOZ0plMkF4NG90OXhpcXhZR1lYL0Q5bXIwcVpBY1UzYmtNU3lzbVpqWXI5Q2ZndTI0cUE90','&search=UID:','$PUserTableID$',',Kontrol:1,PID:189,UserID:26') AS OnayLinki
Concat kullanılarak gelecek olan değerler birleştirilir. Öncelikle hangi form sayfasına gidileceği bilgisi kopyalamış olduğumuz Public Link olacağından bu link değeri yazılır. Ardından Search parametresi kullanılarak İzinler form sayfası açıldığında form alanlarının göndereceğimiz bilgiler ile dolması sağlanır.
Search kullanımı için daha detaylı bilgiye bu link üzerinden erişebilirsiniz.
https://docs.xpoda.com/hc/tr/articles/4414587377170-Search-Parametresi-Kullan%C4%B1m%C4%B1
Göndermiş olduğumuz alanlar ile form sayfasındaki alanların isimlerinin aynı olması gerekmektedir.
Tek bir kullanıcıya onaya gönderdiğimiz için UserID alanına sabit olacak şekilde 26 değeri gönderilir. Sistemde onay yetkisini verecek kullanıcının ID değeri 26'dır. Oluşturmuş olduğumuz link onay linki olduğu için Kontrol alanına 1 değeri(WORK FLOWS tablosunda 1'in karşılığı Onaylandı anlamına gelmektedir.) yazılır. Sorgu sonucu dönen değere ALIAS verilerek OnayLinki şeklinde isimlendirilir.
Aynı şekilde Red işlemi içinde bir link oluşturulur.
CONCAT('https://xpodanew.xpodacloud.com//Forms/DisplayForms?fm=Z2s4Y25odGlsMmRSUVcwUDJmN3VKSGxrZ3FoUTI5bjF4ODZ3bWR2V1J4ZnRPZkJHZzNjdGdWUGdOZ0plMkF4NG90OXhpcXhZR1lYL0Q5bXIwcVpBY1UzYmtNU3lzbVpqWXI5Q2ZndTI0cUE90','&search=UID:','$PUserTableID$',',Kontrol:2,PID:189,UserID:26') AS RedLinki
Kontrol değeri 2(WORK FLOWS tablosunda 2'in karşılığı Reddedildi anlamına gelmektedir.) olacak şekilde değiştirilerek ALIAS olarak RedLinki ismi verilir.
Sonuç olarak oluşturulan nesnenin sorgusu aşağıdaki gibidir.
SELECT CONCAT('https://xpodanew.xpodacloud.com//Forms/DisplayForms?fm=Z2s4Y25odGlsMmRSUVcwUDJmN3VKSGxrZ3FoUTI5bjF4ODZ3bWR2V1J4ZnRPZkJHZzNjdGdWUGdOZ0plMkF4NG90OXhpcXhZR1lYL0Q5bXIwcVpBY1UzYmtNU3lzbVpqWXI5Q2ZndTI0cUE90','&search=UID:','$PUserTableID$',',Kontrol:1,PID:189,UserID:26') AS OnayLinki,
CONCAT('https://xpodanew.xpodacloud.com//Forms/DisplayForms?fm=Z2s4Y25odGlsMmRSUVcwUDJmN3VKSGxrZ3FoUTI5bjF4ODZ3bWR2V1J4ZnRPZkJHZzNjdGdWUGdOZ0plMkF4NG90OXhpcXhZR1lYL0Q5bXIwcVpBY1UzYmtNU3lzbVpqWXI5Q2ZndTI0cUE90','&search=UID:','$PUserTableID$',',Kontrol:2,PID:189,UserID:26') AS RedLinki
Send To Approval akış elemanına gelinerek mail içeriği düzenlenir.
Nesne içerisinde oluşturulmuş olan Onay ve Red Linkleri $P ile mail içeriğine eklenir.
İzin Talep Formu sayfasına gelip yeni bir kayıt atılıp akış başladığında kullanıcıya gidecek olan mail aşağıdaki gibidir.
Bu kullanım kullanıcı dostu bir çalışma olmadığından Mail içeriğini değiştirmek için tekrar akış alanına geri dönülüp Mail içeriği değiştirilir.
E-Mail Content alanında yer alan View HTML butonuna tıklanarak linkler için iki adet buton eklenir.
Eklenmiş olan butonlarda css değişiklikleri yaparak ya da farklı html sorgusu yazarak kendinize göre özelleştirme yapabilirsiniz. Örnek html kodları aşağıdaki gibidir.
<html>
<head>
<style>
.button {
background-color: #4CAF50; /* Green */
border: none;
color: white;
padding: 15px 32px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
margin: 4px 2px;
cursor: pointer;
}
.button2 {background-color: #f44336;} /* Red */
</style>
</head>
<body>
<p>Akışı onaylamak veya reddetmek için aşağıdaki butonları kullanabilirsiniz</p>
<button class="button"><a href=$POnayLinki$>Onayla </a> </button>
<button class="button button2" <a href=$POnayLinki$>Reddet</a></button>
</body>
</html>
Html kodlarının ekledikten sonra Update butonuna tıklanılır. Mail içeriği aşağıdaki gibi değişecektir.
Tüm bu işlemler tamamlandıktan sonra İzinler form sayfasına gidilir. Ve bulunan FlowID değerine göre akış güncelleme işlemi gerçekleştirilir.
Bu kullanımda iki aksiyona ihtiyacımız vardır, akışın onaylanması ve reddedilmesi..
Bunun için İzinler form sayfasına Akış Güncelle adında bir buton eklenerek içerisine iki adet aksiyon eklenir.
Onaylama işlemi için Update Flow aksiyonu kullanılarak ilgili alanlar doldurulur. FlowID bilgisi, AkisID alanında tutulduğu için bağlı olan alanlara AkisID değeri yazılır.
Search parametresiyle gelen Kontrol değerinin içerisinde 1 veya 2 değerleri gelmektedir. 1 onayla 2 reddet anlamına geldiği ve bu aksiyonda Type Of Operation Complete seçili olduğu için aksiyona resimdeki gibi bir çalışma koşulu eklenmelidir.
Kontroldeki değere bakılarak 1 olması durumunda gelen FlowID onaylanacak, onun dışında aksiyon çalışmayacaktır.
Bu aksiyon kopyalanarak buton içerisine yeniden eklenir. Toplamda buton içerisinde 2 aksiyon bulunacaktır.
Complete değeri yerine Reject değeri seçilir, çalışma koşulu değiştirilerek aksiyon kaydedilir. Kopyalanan aksiyonun son hali aşağıdaki gibidir.
AkisID alanına gelinerek değer değiştiğinde özellik değiştir aksiyonu ile az önce eklemiş olduğumuz buton tetiklenir.