Karşılaştırma
Akışta bir koşul/dallanma noktasıdır. Bir kaynak nesnenin değerini (örneğin bir form alanını ya da bir akış değişkenini) okur, onu tanımladığınız değerlerle karşılaştırır ve çıkan sonuca göre akışın hangi yoldan ilerleyeceğini belirler.
Tipik kullanım: "tutar 10.000'den büyükse üst yöneticiye, değilse birim müdürüne git" gibi sayısal bir eşik; ya da bir metin/durum değerine göre farklı kollara ayrılan akışlar.
Ne zaman kullanılır?
- Akışın bir noktada iki ya da daha fazla yola ayrılması gerektiğinde.
- Bir form alanı, bir akış değişkeni ya da akışı başlatan kişi gibi bir kaynağın değerine göre yönlendirme yapacağınızda.
- Sayısal eşik, metin eşitliği, tarih, evet/hayır gibi basit karşılaştırmaların akış rotasını belirlediği durumlarda.
Karşılaştırılacak değeri çoğunlukla bir önceki adımda bir Değişken ya da Fonksiyon üzerinden hazırlar, sonra bu nesnede karşılaştırırsınız.
Ayarlar
Karşılaştırma nesnesi seçildiğinde tasarımcıda şu başlıklar düzenlenir:
| Ayar | Açıklama |
|---|---|
SourceObjectName | Değeri okunacak kaynak nesnenin adı. |
SourceProperty | Kaynak nesnede karşılaştırılacak özellik. |
ComparisonValueType | Karşılaştırmanın türü (metin, sayı, tarih, evet/hayır gibi). |
ResultType | Üretilen sonucun tipi. |
Results | Karşılaştırma kollarının (çıkış yollarının) tanımları. |
Akıştaki yeri
Karşılaştırma, akışın ortasında bir yol ayrımıdır: önceki adım tamamlandığında kaynak değer okunur, tanımlı karşılaştırma çalışır ve sonuca göre akış ilgili kola yönlendirilir. Kendi başına bir bekleme ya da onay noktası değildir; sadece rotayı belirler. Karşılaştırılacak değeri bu adıma gelmeden önce hazır etmiş olmanız gerekir.
Kod örnekleri
Karşılaştırmayı genellikle tasarımcıda kurar, kaynağı ise yukarıda bir değişken üzerinden beslersiniz (örneğin v_x.Value = "1"). Aşağıdaki Compare* metotları bu işin programatik karşılığıdır ve her biri akış motorunun rota için kullandığı bir sonuç (JObject) döndürür. Sunucu (akış) kodu turuncu çerçevelidir.
// Metin değeri karşılaştır
var sonuc = p_Karsilastirma.CompareStringValue(gelenDeger);
// Sayısal değer karşılaştır
var sayiSonuc = p_Karsilastirma.CompareNumericValue(tutar);
// Akışı başlatan kullanıcıya göre karşılaştır
var baslatanSonuc = p_Karsilastirma.CompareFlowInitiatorUser();
Bu nesnenin çalışma anındaki kod kullanımı kaynaklarda örnekle doğrulanmadı. Yukarıdaki metot adları ve imzaları gerçek; ancak Compare* sonucunun akışta nasıl bağlandığı TODO: doğrulanacak (IDE'de teyit edin). Pratikte karşılaştırma genellikle tasarımcıdan kurulur, kod yolu istisnai durumlar içindir.
İpuçları
- Karşılaştıracağınız değeri bu adıma gelmeden önce hazırlayın: bir önceki Fonksiyon adımında hesaplayıp bir değişkene yazmak en temiz yöntemdir.
- Karşılaştırma türünü doğru seçin: sayısal bir eşik için
CompareNumericValue, metin eşitliği içinCompareStringValue. Türü değerle uyumsuz seçmek beklenmedik dallanmaya yol açar. - Akışı başlatan kişiye göre yönlendireceğinizde değeri elle taşımak yerine
CompareFlowInitiatorUser/CompareFlowInitiatorPositionkullanın. - Her karşılaştırma kolunun (her olası sonucun) tasarımcıda bir çıkış yoluna bağlandığından emin olun; bağlanmamış sonuç akışı tıkayabilir.
Doğrulanmış kod arayüzü (FlowCompare)
Özellikler: SourceObjectName (string), SourceProperty (string), ComparisonValueType (ComparisonValueType), ResultType (CompareResultType), Results (List<JObject>)
Karşılaştırma metotları (hepsi JObject döndürür): CompareStringValue(Object), CompareNumericValue(Object), CompareDateValue(Object), CompareBooleanValue(Object), CompareVariableValue(Object), CompareOrganizationId(Int64), CompareOrganizationCode(String), CompareFlowInitiatorUser(), CompareFlowInitiatorPosition()
Tip: FlowObjectDesigner<FlowCompareProperties>. Üyeler gerçektir, ancak çalışma anındaki kullanım idiyomu doğrulanmamıştır (dump-only). TODO: doğrulanacak.
Kaynak: synergy-csp references/flow-objects.md (FlowCompare, dump-only) + _harvest/flow-knowledge.md.