“İş mantığı” gerçekten nedir?


115

PHP ile başladığım 2009'dan beri web geliştirme ile çalışıyorum. ASP.NET'e taşındığımda DDD ve OOAD hakkında çok şey duydum, burada "iş mantığına" ve "iş kurallarına" odaklanıldı. Mesele şu ki, şu ana kadar geliştirdiğim tüm uygulamalar CRUD operasyonları ile ilgiliydi ve bunları pratikte hiç görmedim.

Bu şeylerin gerçekte pratikte neler olabileceğini hayal bile edemiyorum. Peki, bu iş mantığı gerçekten nedir ve bunun bir uygulamaya nasıl uyduğunu? Bunların etki alanı modellerinde yöntem olarak uygulandığını biliyorum, ancak bu yöntemlerin ne olabileceği ve uygulamada nerede kullanılabileceği?

Yanıtlar:


107

CRUD , Oluştur, Oku, Güncelle ve Sil anlamına gelen bir kısaltmadır. Bunlar bir veritabanı zincirinde gerçekleştirebileceğiniz dört temel işlemdir . Ancak iş uygulamaları için her zaman veritabanı kayıtlarını oluşturmak, okumak, güncellemek ve silmekten daha fazlası vardır.

Bazı temel tanımlarla başlayalım ve sonra birkaç örneğe bakalım ve bu tanımların örneklerle nasıl eşleştiğini ve gerçek yazılımla nasıl eşleştiğini görelim.

İş mantığı veya etki alanı mantıktır programının bir parçası gerçek dünya iş kurallarını kodlar veriler oluşturulan saklanan ve değiştirilebilir nasıl belirler. İş nesnelerinin birbirleriyle nasıl etkileşimde bulunduğunu belirtir ve yollara ve iş nesnelerine erişilme ve güncelleştirilme yöntemlerini uygular.

İş Kuralları , bir organizasyon için geçerli olan işlemleri, tanımları ve kısıtlamaları tanımlar. Operasyonlar toplu olarak bir süreç oluşturur; Her işletme bu süreçleri işleri yapan sistemler oluşturmak için kullanır .

Şimdi bazı örneklerle çalışalım.

Bir çek hesabından diğerine para aktarma

İlk olarak, bilmeniz gerekenler nelerdir (girdi)?

  • Transfer yapan kişinin kimliği
  • Aktarılacak para miktarı
  • Kaynak kontrol hesap numarası
  • Hedef kontrol hesap numarası

Uygulanması gereken "iş kuralları" nın bazıları nelerdir?

  • İsteği yapan kişi, bunu yapma yetkisine sahip olmalıdır.
  • İşlem atomik olmalıdır .
  • İşlemin, belirli bir miktarın üzerinde olması durumunda hükümete raporlama şartları olabilir.

"Atomik" ifadesiyle, işlemin tamamen başarılı olması veya tamamen başarısız olması gerektiği anlamına gelir. Paranın diğer hesaba varmadan bir hesaptan alındığı (para kaybolduğu) veya para bir hesaba yatırıldığı ancak başka bir hesaptan borç alınmadığı (para sihirli bir yerden görünüyor) hesap işlemlerine sahip olamazsınız.

Amazon'dan bir şeyler sipariş etmek.

Ne bilmek istiyorsun?

  • Sipariş veren kişinin kimliği
  • Nakliye Bilgisi
  • Fatura bilgileri
  • Ödeme şekli
  • Gönderilecek her bir öğenin miktarı ve miktarı
  • Nasıl gemi (gece, yavaş tekne veya süper koruyucu)
  • Devlet Vergi Oranı

Sipariş verildikten sonra ne olur?

  • Öğeler stoktan çekilir
  • Eldeki miktarlar borçlandırılır
  • Öğeler nakliye için paketlenmiştir
  • Stokta yok ürün siparişi verildi
  • Minimum miktarların altına düşen kalemler sipariş edilir
  • Bir gönderi mi, iki mi?
  • Bir fatura / gönderim listesi yazdırılır ve siparişle birlikte verilir

    ..vb.


5
Tanımları severim ama örneklerde, iş mantığı ile iş kuralları arasındaki farkları özlüyorum.
jdv-Jan de Vaan,

1
TAMAM. Ama neden bir ticari kural olarak "İşlem atomik olmalı" etiketini kullanıyorsunuz? Bir iş kuralı için biraz düşük seviyeli geliyor.
jdv-Jan de Vaan

9
@jdv: Bunu çok fazla düşünüyorsun. Bir satıcı bu işlemin sadece yarısını mı gerçekleştirir?
Robert Harvey,

1
@jdv: İşlemin atomik olması gerektiğini söylemek iki şeyi ifade eder: (1) eğer bir şey işlemin işlenmesini engellerse, işlemin herhangi bir etkisini hiç gerçekleşmemiş gibi geri almak mümkün olabilir (belki bir hata günlüğü raporunun oluşturulması) veya yapılması gereken her şeyi tamamlar; (2) işlemin hiçbir kısmı bu hesapları içeren diğer herhangi bir "atomik" işlemle örtüşmeyecektir. Örneğin, her iki hesapta da 1.000.000 ABD Doları olan biri, bankanın sorulduğu anda birinden diğerine 500.000 ABD Doları
aktarıyorsa

4
Jdv işleminin atomik olması, sağlanması gereken ve bir son durumla ilgili olan temel bir gereksinimdir.
icarus74

27

CRUD, basitçe bir uygulamanın yaptığı Oluştur, Oku, Güncelle, Sil'dir.

Bir ölçüde, bir hata izci de bir CRUD uygulamasıdır. Hatalar oluşturun, Hataları okuyun (görüntüleyin), Hataları güncelleyin ve belki de onları silin.

Ancak, sadece CRUD'dan daha fazla bir hata takipçisi var.

  • Bir geliştiricinin doğrulanmış veya kapalı hatayı işaretlemesine izin verilmez - bu QA'nın işinin bir parçasıdır. Ve böylece, QA rolünden yoksun olan birinin bir hatayı kapalı veya doğrulanmış olarak işaretleyemediğinden emin olmak için bazı kodlar var.
  • Proje yöneticisinden başka hiç kimse bir hatayı silemez .
  • Bir hatanın "beni test et" olarak işaretlenmesi için, hataya karşı en az bir kod işlenmesi gerekir.
  • Yalnızca 'kapalı' durumdaki bir hata 'yeniden açılan' durumuna getirilebilir
  • Hataya atanan geliştirici, onu 'kod incelemesi'nden' kod incelemesi tamamlandı'ya 'taşıyamaz
  • KG ve Geliştiriciler, yalnızca atandıkları projelerdeki hataları görebilir.

Yukarıdakileri uygulayan kod, uygulamanın iş mantığıdır.

İş akışlarının kısıtlanması veya CRUD'da çeşitli işlemleri kim yapabilir. Bunlar bir CRUD uygulamasını diğerinden ayıran şeydir. Bunlar , uygulamanın nasıl çalıştığını gerçekten söylemek için işletmeyi edinmeniz gereken bölümlerdir . Ne kadar mantıklı ... peki, en iyisi, proje yöneticisinin kulağından çıkan bir biranın üzerinde tartışmak. Ama iş mantığı budur.

Elbette, hiçbir rolün olmadığı 'saf' bir CRUD uygulaması yazmak mümkün, her şey değiştirilebilir ve görüntülenebilir - ancak bunlar kuraldan ziyade istisnadır.

İş mantığı , size verilen iş kurallarını ele almak için programınıza yazdığınız mantıktır.


İş kurallarına girmeye başladığınızda, bu, kendinden veya iş mantığından daha yüksek bir seviyede olma eğilimindedir. Bu, işle çalışan bir iş analistinden aldığınız şeyler olma eğilimindedir.

Bu örnekte, bir öğenin iadesinin bir mağazada iade masasında nasıl işleneceğini belirleyen bir program düşünün.

  • Makbuz 90 günden daha eski veya daha eski ise, yalnızca mağaza kredisi verilebilir
  • Makbuzun 90 günden daha eski olması durumunda, makbuzun satın almak için kullanıldığı ihaleyi kredilendirin (kredi kredi kartına geri döner, nakit paraya geri döner, mağaza kredisi mağaza kredisine gider) ... Çek, bu durumda nakit kullanın.

Bunlar bazı iş kuralları. Uygulamanın CRUD kısmıyla konuşmuyorlar.

İş kuralları ile çalışırken, bunları ham kodu sisteminize yazmak yerine, bir kural motorunda (örneğin, Windows Workflow Foundation Kural Motoru ) yazabilirsiniz.


Mantık / kurallar ayrımının terminolojiden biri olduğunu ve bütün gece boyunca tartışılabileceğini (bir bira için tekrar en iyisi) idrak edin. Her ne kadar bu nadir bir ayrım olmasa da, ikisi birbirine karışabiliyor olsa da.


23

Diğer cevaplar doğrudur. Bir ek düşünce…

İş Mantığı Taşınabilir mi

Eğer olsaydı bir yazılım projesini yeniden hayata farklı bir programlama dilinde, hareketli söylemek Turbo Pascal için Java , iş mantığı ve iş kuralları eski ve yeni projeler ortak olurdu budur .

Programlama dili farklı olurdu. Kaynak kodu tamamen farklı olabilir. Araçlar ( IDE'ler , derleyiciler vb.) Tamamen farklı olabilir. Kullanıcı arayüzü tamamen yeniden organize veya farklı olması olabilir görünüm ve his . Dokümantasyon muhtemelen farklı olurdu. Ancak iki projenin amacı, gerçekleştirilen çalışmanın sonucu / gerçekleştirilen hedefler aynı olacaktır.


10

İş mantığı temel olarak 2 geniş kategoriden oluşur: doğrulama ve akış. İş mantığı, 1. maddenin 2. maddeye eşit veya ondan büyük olması gerektiğini söylüyor; örneğin, satın alınacak ürün sayısının stoktaki ürün sayısına eşit veya ondan az olması gerekiyor.

Bir uygulamada, işletme çalışanları bunun bir işletme kuralı olduğunu söyler ve bu nedenle bu işletme mantığını uygulamak için kod yazarsınız (doğrulama). Başka bir uygulama, sipariş edilen ürün sayısının stoktaki ürün sayısından büyük olması durumunda, siparişi kabul etmek ve daha sonra fark artı% 20 için kendi siparişinizi vermek ve bu iş mantığını (akış) yazmanız gerektiğini söyleyecektir. .

CRUD basitçe depoya veri girip çıkıyor ve değiştiriyor. İş mantığı, bu verilerle ne yaptığınızı ve hangi dönüşümleri yapmanıza izin verildiğini belirler. Müşteriniz gelecekte, belirli bir coğrafi bölgeden (yerliler / ziyaretçiler için indirimler) 5'in altında doğmuş mu? CRUD basittir, ancak bir çocuk vergi kredisi alabileceğinizi bilmek, ancak çocuk sizinle birlikte yaşadığı zamanın yarısından daha fazla yaşadığı takdirde, sadece 6 aydan daha fazla değil, takvim yılında hayatta kalması daha karmaşıktır.


9

İş mantığı veya kuralları , kullanıcı arayüzünün ("programlama öğeleri") mekaniğiyle ilgili olmayan herhangi bir şeydir . Bunlar, bu işlemi yapıyor olsaydınız ya da 100 yıl önce (manuel olarak) ne olursa olsun uygulamanız gereken şeylerdir. Örneğin, bir satışa satış vergisi ne zaman uygulanır?


1

Bir programın veya uygulamanın "iş mantığı", kodun aslında girdi ile ilgili işlemleri yapan (kullanıcı, işletim sistemi vb.) Bir parçasıdır. Bir uygulamanın "iş kuralları" genellikle programın kendisinin tanımlanmış parametreleridir (girdilerin nasıl işleneceği gibi). En azından, bu nasıl birçok kişiden bahsettiğini duydum. Kodun bölümlerini tanımlamak için hemen hemen benzer terimlerdir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.