Carrier Management System (CMS), adını verdiğimiz yeni bir projeye başladık, bu projede nasıl bir yol izlediğimizi ve gerekli bilgileri toplayıp nasıl bir mimari çalışma yaptığımızdan bahsedeceğim.
Bir yazılımcının en iyi motivasyonu, İşe yarayacak ve sorun çözeceğinden emin olduğu projeleri geliştirmesidir.
CMS PROJESİNİN KAPSAMI
CMS projesinin kapsamını aşağıda madde madde açıklamaya çalıştım. Maddelerden de anlaşılacağı üzere, farklı bir sistem kurgusu ile kargo taşımacılığı yapmaktadır. Esneklik, Doğruluk ve Hız doğrultusunda kapsam çalışması yapılmıştır.
Her türlü WMS (Depo Yönetim Sistemi) sistemi ile entegre çalışabilmektedir.
Sistemi olmayan taşımacılık yapan firmalara uygun yazılmıştır.
Sistemi olan kargo firmaları ile entegre çalışmaktadır.
Sipariş varış merkezi ve dinamik rotalama yapabilmektedir.
Araç dolum ve Desi hesaplaması yapabilmektedir.
CMS PROJESİNİN ÖNEMİ
CMS projesi ile ilgili detay bilgiye hemen girmeden, CMS projesinin önemi hakkında biraz konuşmak istiyorum.
Bildiğimiz üzere Pandemi ve virüs süreci ile ilgili hayatlarımızda ve yaşantımızda çok fazla şeyi değiştirmek zorunda kaldık, alışkanlıklarımızı gözden geçirdik, yeni alışkanlıklarımız çıktı veya eski alışkanlıklarımızdan kurtulmaya çalışıyoruz.
Yeni kazandığımız alışkanlıklarımızdan bir tanesi, online alışveriş diyebilirim. Günümüzde zaten çok fazla tercih edilen online alışveriş Pandemi sonrası tavan yaptı.
Her türlü istatistiksel veri gösteriyor ki, online alışverişteki bu artış uzun bir süre devam edecek, çünkü insanlar AVM lere gidemiyor veya Fiziksel ortamlarda alışveriş yapamıyor.
Bu durumu görmüş olacak ki büyük devler online alışveriş uygulamaları veya kanalları açmaya başladı. Hala daha geliştirilecek çok uygulama olduğunu düşünüyorum.
Hepimiz online alışveriş yapıyoruz, bu konuda ortak beklentimiz hızlı ve sorunsuz teslimat.
Kargo süreçleri çok basitmiş gibi veya önemsiz bir konu gibi görünse de aslında çözülmesi gereken önemli bir sorun haline doğru gidiyor.
Sorundan kastım; Her gün farklı sosyal kanallardan bazı kargo taşımacılığı yapan firmalarının çalışanları tarafından sipariş kolilerine yaptığı işkenceyi izliyoruz.
Siparişlerin kolilerinin içerisin deki ürünün değeri bilinmemektedir, her koliye pahalı ürün içeriyor gözüyle bakmak gerekmektedir.
Peki bu işkence neden ? Bu soruyu siz değerli okuyuculara bırakıyorum. Bana göre bu konu 'Değer' ile ilgili.
Tamda bu konu ile ilgili gözlemlediğim kadarıyla çalışan firmalar veya startup lar var. Büyük kargo firmalarının bu davranışları aynı zamanda bu uygulamalar için satış politikası haline gelmiş durumda diyebilirim.
Biz CMS uygulamasının her anında hızlı ve sorunsuz teslimat sürecini düşündük ve adımlarımızı bu konu üzerine attık diyebilirim. Teknolojik her kararı bu konu üzerinde detaylıca düşünerek verdik.
CMS PROJESİ MİMARİ ÇALIŞMA
Dağıtım ekibi ile yoğun geçen bir dönemi atlattık ve bizde konu ile ilgili farklı araştırmalar yaparak hızlı ve sorunsuz taşımacılığı yapacak olan uygulamanın alt yapısını çıkaracak bilgi ve birikime ulaştık.
Makalenin başlığında da belirttiğim üzere, CMS bir kargo firması olabilir ama kendi araçları yoktur ! Sistem farklı taşımacılık yapan firmaları içerisinde barındırarak,
Akıllı Dağıtım Yönetimi (Shipment, Order)
Dedike araç yönetimi (Route, Voyage, Vehicle)
Sistemleri olan diğer büyük kargo şirketleri yönetimi
Route algoritması ile rota çizimi (Mapping)
CMS Projesi yukarıda bahsedilen konularda oldukça verimli çalışmaktadır.
Şimdi biraz mimari ve teknolojik yaptığımız çalışmadan bahsedeyim.
Proje hangi teknoloji ile geliştirilecek
Hangi ortamlarda çalışacak
Ne tür bir DB yapısı olacak
Ortak metotlar
Ortak parametreler
yukarıda belirtilen konuları netleştirdikten sonra teknolojik ortamlar hakkında aşağıdaki gibi seçeneklerde karar kıldık.
Mobile (Native) uygulama (Taşımacılık Personelleri için) - XAMARIN
Web Client (Dashboard, Dağıtım ekibi) - ANGULAR 8+
ExternalApi (WMS entegre methotları) .NET CORE, ENTITY FRAMEWORK
InternalApi (Kendi bünyemizdeki projelerin ihtiyaçlarının geliştirilmesi için)
SQL SERVER DATABASE
Mobil application, sayfa yönetimi örnek resim.
Sistemi olan veya olmayan bütün dağıtım araçları ve şirketleri'nin kullanabileceği uygulamalar düşünülmüştür, İnternetin olmadığı yerde offline modda çalışması sağlanmıştır, Herhangi bir WMS den gelen siparişleri, akıllı rotalama ile hızlı şekilde teslimatını sağlayabilmektedir.
CMS akış ve modül teknik çizimi.
C# ile geliştireceğimiz bu projenin database'i oluşturuldu ve solution projeleri açıldı, Jira tasklar'ı üzerinden branchler açılarak Kodlamaya başlandı.
Uygulama tamamlandığında, Ortak model çalışmamıza binaen Her türlü WMS projesi ile entegre çalışabilecek bir App haline gelecektir.
CMS PROJESİ İLE ENTEGRASYON
CMS uygulamasını genel yapısı.
Projenin entegrasyon bilgilerini, yukarıdaki taslak çalışma üzerinden daha iyi anlatacağımı düşünüyorum.
Authenticate();
CMS projesi ile entegre olacak olan WMS projeleri için tanımlanan kullanıcının, sisteme entegre olma sürecidir.
Users
Customer Account
Application
Yukarıdaki bu tanımlamalar sonucunda sisteme entegre olacak kullanıcı tanımlanıyor. CMS uygulaması yalnızca Integration Api uygulaması değildir, aynı zamanda Web ve Mobile uygulamaları da vardır. Farklı uygulamalar için farklı kullanıcı tanımlamaları yapılır.
CreateRecipient();
WMS uygulamalarında sipariş için ilk bildirim dediğimiz request'in yapılacağı metot dur. Siparişin teslim edileceği adres bilgisi gönderilir, bunun amacı sipariş paketlemeden önce varış merkezinin belli olma durumudur.
Varış merkezinin belli olması durumu aynı zamanda Taşıyıcı ve Sefer bilgisininde belli olduğu anlamına gelmektedir.
Sipariş için bir varış merkezi oluşturulur ve sipariş özelinde WMS ile bir KEY paylaşılır. WMS Bu Key bilgisini etiket alma ve gönderi oluşturma anında CMS e tekrar göndermelidir.
CreateCommonBarcode();
WMS Paketleme operasyonunda, koliler içerisine ürünler koyularak her koli için farklı Etiket istenmektedir.
Sonuçta bir sipariş farklı kolilerden oluşabilir ve bir birleri ardına bir tanımlayıcı prefix koyulur '1 DEVAM' -> '2.SON' gibi.
Paketleme anında bu metoda her koli için istek yapılır bu istek sonucunda bir etiket(ZPL) gönderilir. istendiği taktirde koliler iptal edilerek tek koli içerisinde birleştirme yapılabilir. Kolilerin dinamik şekilde prefixleri yine oluşturulmaktadır.
CreateShipment();
Paketleme in bittiği, siparişin yükleme ve sevkiyata hazır olduğu anlamına gelir. Dağıtıma hazır hale getirilen siparişleri ilk bildirim de atanan varış merkezlerine ait araçların depolardan toplaması süreci başlatılmış olur.
WMS in gönderdiği Shipment bilgisi, CMS tarafında rota ve sefer düzenlemede kullanılmaktadır.
Depo operasyonlarında paketleme ve kargo süreçlerini hızlı ve esnek hale getirmek istedik, farklı opsiyonel modeller ile offline etiket süreci veya paketlemenin sonunda tüm etiketleri bastır vb. gibi süreçlerimizde mevcuttur.
CancelShipment();
CMS tarafında oluşturulan Shipment ların, WMS tarafında bir nedenden dolayı iptal edilmesi sürecidir.
İptal edilen Shipment kayıtlarının statüsü iptal olarak değiştirilmektedir, ve işlem yapılamaz hale getirilir. İstenirse aynı sipariş için farklı Shipment lar oluşturulabilir.
GetStatusShipment();
Oluşturulan Shipment kayıtları yani siparişler, dağıtımı tamamlanana kadar farklı statülere geçebilir. Örneğin dağıtıma çıktı, teslim edildi vb.
WMS istediği taktirde CMS den siparişin ve kolilerin o anki statü bilgilerini çekebilir, duruma göre mail veya mesaj atabilir. Siparişin durumu ile aksiyon alması gerekir ise alabilir.
CARRIER MANAGEMENT SYSTEM uygulamasının amacı, mimarisi ve yazılım süreci ile ilgili detaylı bilgi vermeye çalıştım. Amacımız büyüyen sektörde yerimizi almak ve kimsenin yapamadığını yaparak başarılı olmak.
Comments