Workflow Server Kurulumu 

  • Bilgisayar>LOGOCRM>WorkflowServer klasörü içinde logocrmWorkflowServer.exe dosyasının Windows servisi olarak kurulur ve bu servis her 15 saniyede bir database'i kontrol ederek oluşturduğumuz iş akışının çalıştırılmasını sağlar.
  • Logo CRM Basic paketinde Workflow modülü desteklenmemektedir. Logo CRM Standart ve Logo CRM Enterprise paketlerinde desteklenmektedir.


Kurulum adımları aşağıdaki videodan takip edilebilir:

Workflow Server Kurulumu ve Örnek Anlatımı.mp4


Önemli

İş akışlarını yürütmek için  Workflow Server Service'in  arka planda çalışıyor olması gerekir. İş akışını tetikleyen bir olay ile iş akışının yürütülmesi arasında, tasarım gereği gecikmeler vardır. Varsayılan olarak, iş akışı sunucusu hizmeti veritabanını her 15 saniyede bir yeniden kontrol eder. Bu nedenle, bir nesne oluşturulduktan veya kriterlere uyması için durumunu değiştirdikten sonra, ilgili iş akışı örneğinin yürütülmesi 15 saniyeye kadar sürebilir.

Workflow Tasarımı Nasıl Oluşturulur (Temel Bilgiler)

İş akışlarında kullanılan iş nesneleri  doğrudan veritabanına kaydedilemez. Bu nedenle, bir iş akışı sunucusu, iş akışı örneğini veritabanına kaydetmeye çalıştığında, serileştirilemeyen iş nesneleri nedeniyle hata oluşur. Bu hatayı önlemek için, ObjectSpaceTransactionScope adlı bir araç kullanılmalıdır. Bu araç, iş akışı örneğinin veritabanına kaydedilmesini engelleyerek, iş nesneleriyle yapılan işlemlerin güvenli bir şekilde gerçekleştirilmesini sağlar. 

Bir iş akışı içinde, yürütülen iş için hedef nesneye  referans atanması gerekmektedir. Bu nesne, oluşturulacak görev nesnesinin  özelliğini belirlemek için kullanılacaktır. Bu amaçla, GetObjectByKey<T> adlı genel bir etkinliği kullanmanız gerekiyor. Bu etkinliği ObjectSpaceTransactionScope içine ekledikten sonra, açılan dialog penceresinden daha önce tanımlanan hedef nesne türünü seçin. Bu işlem, etkinliğin hangi türde bir nesne alacağını belirtir. Son olarak, etkinliğin Key alanına targetObjectId parametresini girin.  Bu, Workflow modülü tarafından oluşturulan tüm iş akışı tanımlarında mevcut olan bir girdi parametresidir ve bir iş akışı örneğinin yürütüldüğü kalıcı nesnenin tanımlayıcısını belirtir.

Artık etkinlik, gerekli nesneyi almak için doğru şekilde yapılandırılmış durumda. Ancak, alınan nesnenin daha sonra kullanılabilmesi için bir yerde saklanması gerekiyor. Bu amaçla, tasarım yüzeyinin altındaki durum çubuğunda yer alan Variables sayfasına gidin. ObjectSpaceTransactionScope seçili iken, iş akışı örneğinin tüm yaşam döngüsü boyunca var olacak bir değişken oluşturacağınızı belirtin. Create Variable düğmesine tıklayın ve değişkene adını ve türünü verin.

Sonrasında GetObjectByKey<> etkinliğini seçin ve etkinliğin özellikler panelinde Result özelliğine oluşturduğunuz değişkeni atayın. 

Hedef nesneye referans atandıktan sonra, bu nesneyle ilişkili bir görev nesnesi oluşturmanız gerekir. Bunun için, Araç Kutusu'ndan CreateObject<> etkinliğini sürükleyip, GetObjectByKey<> etkinliğinin bağlantı noktasına (turuncu üçgen) bırakın. Genel tür parametresi istendiğinde, oluşturmak istediğiniz görev türünü belirtin.

Oluşturulan görev nesnesini saklamak için, tıpkı hedef nesne değişkeninde yaptığınız gibi değişkenini tanımlayın. Bu değişkenlerin arasındaki tek fark, türleri olacaktır. 

CreateObject<> etkinliğini seçin ve etkinliğin Result özelliğine oluşturduğunuz değişkeni girin.

Oluşturulan görev nesnesinin özellik değerlerini doldurmak için, Araç Kutusu'ndan Assign etkinliğini kullanılır. Örneğin oluşturulan nesnenin subject özelliğini doldurmak için etkinliğin To özelliğini task.Subject olarak ayarlayın ve Value özelliğini “New active issue: “ + issue.Subject olarak belirleyin. Bu, oluşturulan Task nesnesinin Subject özelliğine, aktif Issue nesnesinin konusunu içeren bir değer atar.


Önemli

Tamamlanan iş akışını kaydedin. Yeni oluşturulan iş akışı tanımlarının devre dışı olduğunu ve iş akışı sunucu hizmeti tarafından yürütülmeyeceğini unutmayın. Bu nedenle, Activate Action seçeneğini kullanarak iş akışını etkinleştirmeniz gerekecektir.   

Workflow Definition Oluşturma Ekranı

Workflow servisi kurulduktan sonra Logo CRM Uyarlama Araçlarından Designer açılarak Workflow sekmesine gelinir ve Sağ Tık > Yeni tıklanır. 

Tanım, Properties ve Designer olmak üzere iki sekmeden oluşur.

Properties sekmesinde temel özellikler girilir. Name alanına tanım ismi yazılır, Target Object Type alanında kontrol edilmek istenen hedef nesne işaretlenir. Workflow'un hedef nesne oluşturulduğunda tetiklenmesini istiyorsak "Object Is Created" , hedef nesne bir kriterde olduğunda tetiklenmesini istiyorsak "Objects Fits Criteria" işaretlenir. Eğer "Allow Multiple Runs" özelliği işaretli değilse, iş akışı, kriterlere uyan her hedef nesne için bir kez çalışır. Nesne kriterlere uyduğu sürece iş akışını birden fazla kez tekrarlamak istiyorsanız bu seçeneği işaretleyin.

Designer sekmesi 3 bölmeden oluşur; sağ bölmede araç kutusu yer alır, bir iş akışı oluşturmak için birleştirebileceğiniz etkinlikleri içerir. Ortada tasarım alanı bulunur, araç kutusundaki etkinlikler sürükle-bırak yöntemiyle burada birleştirilip iş akışı oluşturulur. Sol bölmede ise tasarım yüzeyinde seçili etkinliğin özellikleri listelenir.



Örnek Workflow Tasarımı Senaryosu

Örnek senaryoda LogoCRM üzerinde yeni oluşturulan Teklif kaydına bağlı olarak, üç adet ilişkili görev oluşması; İlişkili görevlerin Tanım ve Atanan Departman bilgilerinin iş akışında atanmış şekilleriyle gelmesini tasarlayalım:

  1. Definition yaratıldıktan sonra Properties ekranında Target Object Type: Teklif ve Automatically start when: Object is created işaretlenir. Çünkü hedef nesnemiz teklif ve yeni bir teklif yaratıldığında akışın çalışmasını istiyoruz.



2. Designer ekranına geçilir. Temel bilgilerde anlatıldığı üzere tasarıma ObjectTransactionScope aracıyla başlanır.

3. Hedef nesne olan Teklif'e referans atamak için GetObjectByKey<MT_Proposals> etkinliği sürükleyip bırakılır ve Key alanına targetObjectId parametresi girilir.

4. Etkinliğin Result bölümüne bağlamak için türü MT_Proposals olan değişken oluşturulur ve özellik penceresinde Result alanına yazılır:  

 


5. Daha sonra yeni yaratılacak nesne için CreateObject<MT_Task> sürükleyip bırakılır ve Result bölümüne bağlamak için türü MT_Task olan değişken oluşturulup özellik penceresinde Result alanına yazılır. 

 

6.Yalnız biz burada görevin ayrı bir nesne olarak değil teklife ilişkili bir nesne olarak yaratılmasını istiyoruz ve türler arasında teklife ilişkili görevi karşılayan alan bulunmuyor. Task içinde Proposal Oid collection olarak tutulmaktadır.

Bu sebeple AddToCollection<MT_Proposals> fonksiyonunu kullanarak yaratılacak görevi teklife ilişkilendireceğiz. Collection alanına task.ProposalOid yazıyoruz ve Item alanına proposal değişkenini yazıyoruz.



7. Ardından yaratılacak görevin özelliklerini doldurmaya başlayabiliriz. Öncelikle görevin Tanım (Subject) özelliğini doldurmak istiyoruz.

Sol taraf (To) değerine yarattığımız nesneye bağladığımız değişkenin doldurmak istediğimiz alanına karşılık gelen ifade olarak task.Subject yazıyoruz. Alan adı veritabanından kontrol edilerek doğru şekilde yazılmalıdır yoksa hata verecektir.

Subject alanı String türündedir, bu sebeple sağ taraf (Value) değerine çift tırnak içinde istediğimiz Tanımı yazıyoruz. Tür uyuşmazlığı olması durumunda yine hata ile karşılaşılacaktır.



8.  Bir başka özellik olarak Atanan Departman (AssignedDepartment) alanını doldurmak istiyoruz. Bu alan CT_User_Departments türünde karşımıza çıkmaktadır. Öncelikle GetObjectByKey<CT_User_Departments> etkinliğini kullanarak istediğimiz kullanıcı departmanını Guid üzerinden almamız gereklidir.

Bunun için etkinliğin Key kısmına Guid.Parse("istenilen departmanın Oid değeri") yazılır. 

Etkinliğin Result bölümüne bağlamak üzere, türü CT_User_Departments olan bir değişken oluşturulur ve Result alanına yazılır.


9.  Daha sonra Assign etkinliği ile AssignedDepartment alanı doldurulur. Value alanına kullanıcı departmanını karşılayan değişken yazılır.


10. Toplamda 3 adet ilişkili görev yaratılması istendiği için aynı işlemler iki defa daha tekrarlanır. Assign edilecek Tanım ve Atanan Departman özellikleri farklı olacağı için sağ taraf ve Guid değerleri değiştirilir. 


Tasarım bittikten sonra kaydedilir ve aktifleştirilir. Workflow servisi Restart edilir.

Ardından LogoCRM'de yeni Teklif kaydı oluşturuldupunda akışın çalışarak istenilen özelliklerde 3 ilişkili görev kaydı yarattığı görülür.