Makale Özeti

Bu makalede Microsoft CRM'in iş akışı (workflow) özelliklerinden bekleme ve kendini çağırma özelliklerini inceleyeceğiz. Böylece belli bir zaman bekleyip belli şartlar gerçekleştiğinde işlem yapan gerçekleşmediğinde ise yeniden bekleyen iş akışları tanımlayabilirsiniz.

Makale

Biliyorum başlık biraz garip duruyor. Ama daha net söylemek gerekirse bu makalemizde Workflow’ların pek bilinmeyen ama aslında önemli ihityaçlara cevap veren özelliklerinden bahsedeceğiz.

Biliyorsunuz ki WorkFlow kavramı CRM içinde önemlidir ve hatta 4.0 sürümü ile en çok gelişme gösteren özelliklerinden biridir. CRM içindeki workflow’lar gene bir Microsoft ürünü olan WorkFlow Foundation yapısı üzerine kurulmuştur. Bu hakkında kitaplar yazılan derin bir konudur ve bu makalenin kapsamı dışında kalmalıdır ama workflow foundation’a hakim olursanız CRM workflow’ları üzerinde varsayılan durumda gelmeyen bir çok özelliği kazandırabilirsiniz. Mesela Epostaların altına link koymak, yada formdaki alanlar üzerinde çarpma toplama gibi aritmetik işlemler yaptırmak gibi.

Konuyu dağıtmadan devam ediyorum. CRM’de Workflow’ları yönetmek, çağırmak gibi işlemlerden Microsoft CRM Asynchronous Processing Service Sorumludur. Kendisini CRM sunucusunda Services altında bulabilirsiniz. Servislere ulaşmak için Bilgisayarıma sağ tıklayıp Manage komutunu verip gelen pencereden Services and Applications --> Services yolunu kullanabilirsiniz.

WorkFlow’lar asenkron olarak çalışırlar. Mesela bir kayıt oluşturulduğunda şu workflow çalışsın dediğinizde kayıt oluşturulduktan kısa bir sure sonra çalışır. Yani kayıt oluşturulmadan önce wf’un çalışması beklenmez. Bunun performans üzerinde etkisi vardır. Çok fazla aynı anda çalışan workflow varsa veya bir workflow takılmışsa gibi özel durumlarda asenkron servis işlemcinizin gücünü çok yüksek derecede kullanır. Ve hatta CRM sisteminin hizmet veremeyecek kadar yavaşlmasına sebep olabilir. Özellikle sisteminizde aşırı bir yavaşlık hissederseniz yada CPU kullanımınız %100’den aşağı inmiyorsa sisteminizda fazlaca bekleyen workflow olabilir.

CRM’de o anda çalışmakta olan yada işlemini bitirmiş olan WorkFlow’ları (kısaca wf) Settings --> System Jobs bağlantısı altında görebilirsiniz.

Bu ekranı kullanarak çalışmakta olan wf’ları durdurmak yada iptal etmek gibi seçeneklere ulaşabilirsiniz.

Şimdi WF’larla yapılan makalemizin konusu olan ve CRM projelerinde karşılabileceğiniz bazı senaryolardan bahsedeyim.

  • Bu iş iligli kişiye 3 gün içinde atanmazsa yöneticisine şu eposta gitsin.
  • Bu müşteriye ürün satıldıktan sonra her ay şu kampanya düzenlensin.

Bu örnekler daha da çoğaltılabilir. Bu örneklerin ortak yanı zamana bağlı olmalarıdır. Yani şu kadar beklesin şunu yapsın şu kadar beklesin bunu yapsın gibi örneklerdir. Wf’ların zaman bazlı çalışabilme ve kendi kendini çağırma özellikleri ile bu tip senaryoları karmaşık kodlar yazmadan wf’lar ile gerçekleştirmeniz mümkündür. Ve hatta bir developer’a gerek kalmadan müşterinin kendisinin de kotarabileceği işlerdendir.

Bir senaryo üzerinden bu durumu inceleyelim. CRM sistemimizde bir lead(müşteri adayı) oluşturulduğunda bir wf çalıştıralım. Bu 1 gün beklesin ve bu sure sonunda lead halen açık durumda ise yani qualified yada disqualified durumlarına getirilmemişse lead’in sahibine cc’sinde yöneticisi olacak şekilde bir mail atsın. Bu düzen bu şekilde devam etsin ta ki lead qualified yada disqualified statülerine getirilinceye kadar.

Settings --> WorkFlows yolunu izleyerek yeni bir workflow açın.

İsim olarak “musteri_adayi_atama verin“ ve entity alanından da lead’i seçin

"Available to run" alanından "As a Child WorkFlow" seçeneğini aktifleştirin bu wf’un kendisini çağırabilmesini sağlayacaktır.

"Add Step" menüsünde Wait Condition seçeneğini seçin ve aşağıdaki gibi doldurun.

Daha Sonra Check Condition seçeneğini tıklayın Lead Statu değeri Open ise şartını girin

If’in altına Send Email ekleyin ve içeriğini aşağıdaki gibi doldurun.

Daha Sonra "Start Child Workflow" seçeneğini sçerek wf’un kendisini çağırmasını sağlayın. Eğer listed wf’u göremiyorsanız önce kaydetmeyi deneyin. Sonra bir daha seçin.

If’I bir daha seçtikten sonra Default Action seçeneğini seçin ve Stop Workflow basamağını ekleyin.

Wf’un son görünümü aşağıdaki gibi olacaktır.

Wf’un yaptığı özetle şudur. Lead oluşturulur oluşturulmaz çalışır ve bir gün bekler daha sonra durumuna bakar halen Open statüsünde ise ilgili epostayı atar ve kendini çağırıp aynı döngüye bir daha başlar ama Open statüsünde değilse yani qualified yada disqualified statülerinde ise çalışması durdurulur.

Publish düğmesine tıklayarak wf’u yayınlayabilirsiniz. Bir Müşteri adayı oluşturduğunuzda aynı ekrandan sol taraftaki menüden Workflows seçeneğini seçtiğinizde o kayıt ile iligli wf’ları görebilirsiniz.

Buna çift tıklayarak açtığınızda wf’un çalışmakta olduğunu görebilirsiniz

Bu makelemizde bekleme gerektiren işlemlerin wf’lar ile nasıl yapılabileceğinden bahsettik. Aynı zamanda wf’ların nasıl kendini çağırabildiğini ve sonlandırabildiğini gördük.