Ana içeriğe geç
Kesit SQL
Orta · BT İş Analizi

Süreci çizmek: AS-IS, TO-BE, BPMN, sıra diyagramı (sequence diagram), karar tablosu

Bugünkü ve hedef süreç, BPMN temel öğeleri, servisler arası mesajlaşma, karar tablosu, kuralı veriden çıkarmak.

Uygulamada aç, 9 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

Yazılı kurallar tek tek doğru olsa bile bütün akışı göstermez. Süreç şeması, “bu noktada ne olur?” sorusunu görünür kılar. Çoğu boşluk iki kutunun arasındaki okta yakalanır.

AS-IS ve TO-BE

AS-IS bugünkü süreç, TO-BE hedef süreçtir. Önce AS-IS yaz: neyin değişeceğini ve kimin işinin etkileneceğini ancak böyle görürsün. Kupon talebinde bugünkü durumu destek ekibinden dinledik:

AdımAS-IS (bugün)TO-BE (hedef)
Fark etmeMüşteri şikâyet yazarsa fark edilirTeslim kaydı gelince sistem süreyi hesaplar
KararDestek çalışanı kendi yorumuyla karar verirKarar tablosu uygulanır
TelafiÇalışan elle kupon tanımlarKupon otomatik oluşur, müşteriye bildirilir
İzlemeKaç kupon verildiği bilinmezHer kupon sipariş numarasıyla kayıtlıdır
Bu tablonun kaynağıLezzet Kurye hayalidir; AS-IS sütunu senaryonun parçasıdır. Gerçek işte bunu görüşme ve gözlemle doğrularsın. Veride bugün teslim sonrası kupon izi yok: indirim, sipariş anında belirlenen bir alan. Geç siparişlerin 247 tanesinde indirim görünmesi telafi olduğunu göstermez.

BPMN temel öğeleri

BPMN (Business Process Model and Notation) süreç çizmek için yaygın kullanılan standart gösterimdir. İşin büyük kısmı dört öğeyle çözülür.

ÖğeÇizimiAnlamı
Olay (event)Daire: ince başlangıç, kalın bitişBir şey olur: teslim kaydı geldi, süreç bitti
Görev (task)Köşesi yuvarlak dikdörtgenBirinin ya da sistemin yaptığı iş
Karar (gateway)BaklavaAkış koşula göre ayrılır; her çıkışın adı olur
Kulvar (lane)Yüzme kulvarı gibi şeritİşi kimin yaptığını gösterir
MüşteriPlatformOperasyonTeslimkaydıTeslim süresinihesaplaGeçmi?HayırKupon yokEvetSınırdolu mu?EvetKuponsuzkaydı loglaSınır doluHayırKuponoluşturKayıttamam mı?HataHata kuyruğunuinceleTamamBildirimgönderKuponugörür

Şemayı okurken her baklavanın bütün çıkışlarının adı var mı, her yol bir bitişe varıyor mu diye bak. Kuponsuz kaydı sistem yazar, bu yüzden Platform kulvarında; Operasyon'a yalnız bir insanın bakması gereken hata düşer. Bu çizim “kayıt tamam değilse ne olur?” sorusunu görünür kıldı: gereksinimde olmayan bir operasyon kuyruğu doğdu. BPMN'de çok daha fazla öğe vardır; bu ders okuyup temel akış çizecek kadarını verir.

Sıra diyagramı (sequence diagram)

BPMN işin akışını, sıra diyagramı sistemlerin birbirine hangi sırayla mesaj attığını gösterir. Dikey çizgiler katılımcılar, oklar mesajlar, kesikli oklar cevaplardır. Zaman yukarıdan aşağı akar.

SiparişKuponVeritabanıBildirimPOST /kuponlarKupon var mı?YokINSERTKupon bildirimi201 CreatedAynı istek ikinci kez gelirsePOST /kuponlarKupon var mı?Var200 OK

Alttaki bölüm önemli: ağ koptuğu için aynı istek ikinci kez gelirse ikinci kupon üretilmez. Bu davranışın adı idempotency; API dersinde ayrıntısına gireceğiz. Çizim bu soruyu toplantıda sormanı sağlar.

Karar tablosu (decision table)

Çok koşullu kuralı cümleyle yazmak hata getirir. Karar tablosu bütün birleşimleri listeler, boş kalan kutu eksik kuraldır.

KuralDurumSüre (saniye)Aylık kupon < 2Sonuç
K1iptal, iadefark etmezfark etmezKupon yok
K2teslim2.700 ve altıfark etmezKupon yok
K3teslim2.701 - 3.600evet30 TL
K4teslim3.601 ve üstüevet60 TL
K5teslim2.701 ve üstühayırKupon yok, “sınır dolu” kaydı
K6kupondan sonra iadefark etmezfark etmezKullanılmamış kupon iptal; açık soru finansta

K1-K4'ü SQL'e dökmek, kuralın veride neye karşılık geldiğini gösterir. Sıra önemli: CASE ilk doğru koşulda durur.

WITH t AS (
  SELECT order_id, customer_id, restaurant_id, courier_id, status, placed_at,
         ROUND((julianday(delivered_at) - julianday(placed_at)) * 86400) AS sure_sn
  FROM lk_orders
  WHERE placed_at >= '2024-10-01' AND placed_at < '2025-01-01'
)
SELECT CASE WHEN status <> 'teslim' THEN 'K1 durum uygun değil'
            WHEN sure_sn <= 2700 THEN 'K2 zamanında'
            WHEN sure_sn <= 3600 THEN 'K3 30 TL'
            ELSE 'K4 60 TL' END AS kural,
       COUNT(*) AS siparis
FROM t
GROUP BY CASE WHEN status <> 'teslim' THEN 'K1 durum uygun değil'
              WHEN sure_sn <= 2700 THEN 'K2 zamanında'
              WHEN sure_sn <= 3600 THEN 'K3 30 TL'
              ELSE 'K4 60 TL' END
ORDER BY kural;

Kuralı veriden çıkarmak

Yazılı olmayan kural çoğu zaman veride durur. Veri sözlüğünde “400 TL üzeri teslimat ücretsiz” yazıyor. Doğru mu, sınır dahil mi? Sor:

WITH sepet AS (
  SELECT order_id, SUM(qty * unit_price) AS tutar
  FROM lk_order_lines
  GROUP BY order_id
)
SELECT CASE WHEN o.delivery_fee = 0 THEN 'ücretsiz' ELSE 'ücretli' END AS teslimat,
       COUNT(*) AS siparis, MIN(s.tutar) AS en_kucuk, MAX(s.tutar) AS en_buyuk
FROM lk_orders o
JOIN sepet s ON s.order_id = o.order_id
GROUP BY CASE WHEN o.delivery_fee = 0 THEN 'ücretsiz' ELSE 'ücretli' END
ORDER BY teslimat;

Ücretsiz teslimatların en küçüğü 400 TL, ücretlilerin en büyüğü 395 TL. Tek istisna yok. Yani kural “400 TL ve üzeri ücretsiz” diye yazılmalı, sözlükteki “üzeri” sözcüğü sınırı yanlış anlatıyor. Veri kuralı doğrular ya da çürütür, ama kuralın neden öyle olduğunu söylemez: onu iş birimine sorarsın.

Alıştırmalara geç (9)