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ım | AS-IS (bugün) | TO-BE (hedef) |
|---|---|---|
| Fark etme | Müşteri şikâyet yazarsa fark edilir | Teslim kaydı gelince sistem süreyi hesaplar |
| Karar | Destek çalışanı kendi yorumuyla karar verir | Karar tablosu uygulanır |
| Telafi | Çalışan elle kupon tanımlar | Kupon otomatik oluşur, müşteriye bildirilir |
| İzleme | Kaç kupon verildiği bilinmez | Her kupon sipariş numarasıyla kayıtlıdır |
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 | Çizimi | Anlamı |
|---|---|---|
| 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örtgen | Birinin ya da sistemin yaptığı iş |
| Karar (gateway) | Baklava | Akış 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 |
Ş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.
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.
| Kural | Durum | Süre (saniye) | Aylık kupon < 2 | Sonuç |
|---|---|---|---|---|
| K1 | iptal, iade | fark etmez | fark etmez | Kupon yok |
| K2 | teslim | 2.700 ve altı | fark etmez | Kupon yok |
| K3 | teslim | 2.701 - 3.600 | evet | 30 TL |
| K4 | teslim | 3.601 ve üstü | evet | 60 TL |
| K5 | teslim | 2.701 ve üstü | hayır | Kupon yok, “sınır dolu” kaydı |
| K6 | kupondan sonra iade | fark etmez | fark etmez | Kullanı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.