Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Yazı Tipi BoyutlandırıcıAa
  • Anasayfa
  • Teknoloji
    • Siber Güvenlik
    • Yapay Zeka
    • Donanım
    • Bilim
  • Yazılım
  • Savunma & İstihbarat
  • Oyun
  • Yaşam
    • Finans
    • Sinema
    • Dünyadan Haberler
  • İş Birliği
Okuma: Laravel ve Inertia.js ile Çok Departmanlı İş Akışı Yönlendirme Sistemi Nasıl Kurdum
Paylaş
Yazı Tipi BoyutlandırıcıAa
Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Ara
Bizi Takip Et
  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti
© 2026 Teknomers. All Rights Reserved.

Anasayfa » Laravel ve Inertia.js ile Çok Departmanlı İş Akışı Yönlendirme Sistemi Nasıl Kurdum

Yazılım

Laravel ve Inertia.js ile Çok Departmanlı İş Akışı Yönlendirme Sistemi Nasıl Kurdum

teknomers
Son güncelleme: 3 Mayıs 2026 19:13
teknomers
Paylaş
Paylaş


Çözmeye Çalıştığım Problem

VMMS – bir voucher yönetim sistemi inşa etmeye başladığımda, en zor kısımlardan biri UI veya veritabanı şemasından ziyade workflow yönlendirmesiydi.

Bir voucher talebi sadece bir ofise gitmez. Belirli bir sırayla birden fazla departmana gider; her biri, bir sonraki aşamaya geçmeden önce süreci tamamlamak zorundadır.

Ve herhangi bir aşamada, bir departman:

  • Adımını tamamlayabilir ve ileriye geçirebilir
  • Tüm talebi reddedebilir
  • Belgelerin eksik olduğu konusunda flag koyabilir ve süreci durdurabilir

Bunu düzgün bir şekilde yönetebilecek bir sistem gerekiyordu.



Nasıl Modelledim

Her voucher türü, transaction_flows tablosunda saklanan yapılandırılabilir bir işlem akışına sahiptir:

Schema::create('transaction_flows', function (Blueprint $table) {
            $table->id();
            $table->foreignId('voucher_id')->constrained()->cascadeOnDelete();
            $table->string('department');
            $table->integer();
            $table->timestamps();
        });
        

Bir müşteri talep gönderdiğinde, sistem o voucher türü için akışı okur ve onu otomatik olarak ilk departmana yönlendirir.



İlerlemeyi İzleme

Her seferinde bir departman bir talebi işlediğinde, bir denetim kaydı oluşturulur:

Schema::create(, function (Blueprint $table) {
            $table->id();
            $table->foreignId()->constrained()->cascadeOnDelete();
            $table->string();
            $table->timestamp()->nullable();
            $table->timestamp()->nullable();
            $table->date()->nullable();
            $table->timestamps();
        });
        

process_initiate bir departman sürece başladığında ayarlanır. process_accomplished ise bitirdiğinde ayarlanır. Eğer sadece process_initiate ayarlanmışsa, bu o anki aktif departmandır.



Aktif Departmanı Bulma

Bu beklediğimden daha karmaşıktı. İşte mantık:

$activeAudit = $auditTrails->first(
            fn($a) => $a->process_initiate && !$a->process_accomplished
        );

        if ($activeAudit) {
            return $activeAudit->processing_offices;
        }

        // Aktif denetim yoksa, bir sonraki adımı bul
        $doneOrders = $auditTrails->filter(fn($a) => $a->process_accomplished)
            ->map(fn($a) => $flow->firstWhere(, $a->processing_offices)?->order_number ?? 0);

        $lastDone = $doneOrders->max() ?? 0;
        $nextStep = $flow->firstWhere(, $lastDone + 1);

        return $nextStep?->department ?? ;
        

Zor olan kısım uç durumları yönetmekti:

  • Bir departman atlanırsa ne yapılacak?
  • Eksik belgeler için talep geri dönerse ne olur?
  • Son departman yeni bitirdiyse ne olur?

Her biri için ayrı bir yönetim gerekiyordu.



Ön Yüzdeki Pipeline Stepper

Vue 3 tarafında, her departmanı bir adım olarak gösteren bir stepper bileşeni oluşturdum — yeşil tamamlanmış, puls eden aktif, gri ise beklemedeki.

const stepStatus = (req, step, stepIndex) => {
            const audits = req.audit_trails ?? const accomplishedCount = auditsfiltera => aprocess_accomplished !== null
            lengthif stepIndex  accomplishedCountreturn done;
            if stepIndex === accomplishedCountreturn active;
            return pending;
        


Eksik Belgeler — Akışı Durdurma

Bir personel eksik belgeler için bir talebi flagladığında, akış durur. Müşteri bilgilendirilir ve belgeleri yüklemesi gerekir. İşlemlerin devam edebilmesi için gerekli belgeleri yüklemesi gerekir.

Bunu, hangi işlemlerin hangi kullanıcıdan belge beklediğini takip eden ayrı bir requirement_validations tablosuyla yönettim.

$missingDocIds = RequirementValidation::where(, )
            ->whereNull'resume_transaction'->pluck'transaction_id'->();
        

Bu resume_transaction doldurulduğunda, akış yeniden başlar ve talep işlemenin devamı için ilgili personele geri döner.



Öğrendiklerim

1. Akışları işlemden ayrı modellemek
transaction_flows‘u voucher_transactions‘dan ayırmak, bir voucher türü için işlem sırasını değiştirmeyi kolaylaştırdı.

2. Denetim kayıtları en iyi dostunuzdur
Her işlemi zaman damgaları ile saklamak, işleme sürelerini hesaplamayı, performansı izlemeyi ve ayrıca analizler oluşturmayı kolaylaştırdı.

3. Uç durumlar size yakalanacak
“mutlu yol” kolaydı; eksik belgeler, atlanan departmanlar ve reddedilen talepler ayrı bir işlem gerektiriyordu.



Sonuç

Pipeline izleyici artık VMMS’deki en kullanışlı özelliklerden biri. Müşteriler taleplerinin nerede olduğunu gerçek zamanlı olarak görebiliyor – artık yüz yüze takip etmek zorunda değiller.

İşleyişini görmek isterseniz:

🔴 Canlı demo: https://vmms-app-production.up.railway.app/login

VMMS, kullanmak veya onun üzerine inşa etmek için Gumroad’da mevcuttur:
👉 https://getvmms.gumroad.com/l/zeroqz

Herhangi bir sorunuz varsa yorumlarda cevaplamaktan mutluluk duyarım!

Kaynak: Orijinal Makale

Üretim Uygulamalarınızı Kodu Durdurun: Geliştirici Odaklı Yapay Zeka İçin Bir Gerekçe
Laravel 2026: Neden Geliştiriciler Modern Backend Geliştirme İçin Hala Laravel’i Seçiyor?
Filament eklentisinde çok dilli çalışma zamanı koleksiyonları oluşturma
Sunucu Çökme Sorunlarını Önleme: Laravel SaaS Uygulamaları için Dinamik API Hız Sınırlama
Billmora ile Tanışın: WHMCS ve Blesta için modern, açık kaynak bir alternatif
Bu Makaleyi Paylaş
Facebook Bağlantıyı Kopyala Yazdır
Paylaş
Önceki Makale Robotaksilere Nasıl Bilet Kesilir?
Sonraki Makale Nvidia, bellek sıkıntısından dolayı eski Jetson AI işlemcilerini emekliye ayırıyor

Sanal Medya

FacebookBeğen
452Takip Et
PinterestSabitle
237Takip Et

Son Eklenenler

Yeni Oyun Duyurusu: Persona 6 Resmen Açıklandı
Oyun
Gears Of War: E-Day ile Testere Lancer’ın Hikayesi Keşfediliyor
Oyun
Gears Of War’ta Devrim Niteliğinde Hareket Yeniliği
Oyun
Acil: Yapay Zeka Destekli Windows Terminal ile Tanışın!
Siber Güvenlik
Elegoo Jupiter 2 Reçineli 3D Yazıcı İncelemesi: Dev Geri Döndü
Donanım
Yeni Spyro Oyunu: A Realm Beyond ile Efsane Yeniden Canlanıyor
Oyun
//

Siber güvenlik, yapay zeka ve savunma sanayiinden; finans ve sinema dünyasına uzanan geniş bir yelpaze. Teknomers; teknoloji, strateji ve yazılım dünyasını sade bir dille sizlerle buluşturuyor.

Kurumsal

  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti

Kategoriler

  • Teknoloji
  • Oyun
  • Sinema
  • Siber Güvenlik
  • Bilim
  • Finans
  • Dünyadan Güncel Haberler

Populer

  • TV'de Ücretsiz İzlenebilen Şifresiz Erotik Kanallar (2025 Güncel Frekans Listesi)

  • The Last of Us PC Kontrolleri: Hızlı Silah Değiştirme ve Tüm Tuşlar (2025)

  • Hogwarts Legacy'de Odaklanma İksiri Nasıl Yapılır?

Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Bizi Takip Et
© 2026 Teknomers. All Rights Reserved.
Welcome Back!

Sign in to your account

Kullanıcı Adı veya E-posta Adresi
Şifre

Şifrenizi mi unuttunuz?