Page History
...
Panel | |||||
---|---|---|---|---|---|
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.
|
Panel |
---|
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. |
...
Panel |
---|
Ö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:
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. |