jBPM5 - Hızlı Kılavuz

JBPM, "Java Business Process Management" anlamına gelir. Açık kaynaklı bir çerçeve olan bir JBoss ürünüdür. Daha ileri gitmeden önce bir iş süreci tanımlayalım.

İş Süreci nedir?

Tanım olarak, bir iş süreci, bir iş hedefine ulaşmak için insanlar ve / veya sistemler tarafından yürütülen, tekrarlanabilir bir sırayla gerçekleşen bir görevler dizisidir. Bir dizi adımın yürütülmesi gereken sırayı (bir akış şeması kullanarak) açıklar. Bir iş süreci, bir iş mantığının görünürlüğünü ve çevikliğini önemli ölçüde artırabilir.

Bir örnek ele alalım. Aşağıdaki ekran görüntüsü, çoğu BT uzmanının ilgili olabileceği bir iş akışını / akış şemasını göstermektedir. Çalışanları performanslarına göre değerlendirmek çoğu kuruluşta izlenen yaygın bir süreçtir.

İşlem aşağıdaki sırayla gerçekleşir -

  • Çalışanlar kendilerini değerlendirir ve raporu Proje Yöneticilerine sunar.

  • Performansınız daha sonra Proje Yöneticisi ve İK Müdürü tarafından değerlendirilir. Değerlendirmeye dayalı olarak, çalışanlara bir derecelendirme verirler.

  • Nihai derecelendirme veya performans geri bildirimi daha sonra çalışanlara geri iletilir.

Bu süreç neredeyse tüm çalışanlar için geçerlidir ve bu nedenle bir iş sürecini anlamak için çok iyi bir örnektir. Bu bir görevler dizisidir ve belirli bir sırada gerçekleşir.

JBPM nedir?

İş süreci, herhangi bir organizasyonel çerçeveyi anlamak için anahtar bir kavramdır. JBPM gibi bir teknoloji, karmaşık iş süreçlerinin verimli bir şekilde yönetilmesine yardımcı olur. JBPM, bir iş sürecini etkili bir şekilde düzenleyebilen bir araçtır. Genel olarak, her kurumsal düzeydeki uygulamada belirli bir sırayla yürütülen bir dizi görev bulunur ve bu işlemler jBPM yardımıyla düzenlenebilir.

JBPM'nin güzelliği, bir akış şemasına benzemesidir. İş analistleri tarafından da kolayca anlaşılabilir. jBPM, bir Java uygulamasına yerleştirilebilir ve bir hizmet olarak çalıştırılabilir.

JBPM'nin özellikleri

jBPM, Java ile yazılmış hafif, açık kaynaklı, tamamen yerleştirilebilir bir işlem motorudur. En dikkate değer özellikleri aşağıda listelenmiştir -

  • jBPM, BPMN 2.0 spesifikasyonları kullanılarak tasarlanan iş süreçlerini yürütür.

  • jBPM, bir iş akışı oluşturmak üzere sürükle ve bırak desteği sağlamak için Eclipse ve benzer IDE'lerle tamamen entegre edilebilir.

  • jBPM, iş analistlerini ve kullanıcıları doğrudan tasarım aşamasından itibaren dahil etmek için kullanılabilir UI araçlarına sahiptir.

  • jBPM, JPA ve JTA yardımıyla kalıcılığı ve işlem yönetimini destekler.

  • Daha sonra diğer iş akışları için bir bileşen olarak kullanılabilecek kullanıcı tanımlı bir görev oluşturmak için özel iş öğesi işleyicileri tanımlanabilir.

Aşağıdakiler, jBPM Eklentisini kurmak için Ön Koşullardır -

  • Java 1.5 (veya üstü) SE JDK
  • Eclipse 4.2 veya herhangi bir sürüm ve jBPM eklentisi

JBPM Java ile yazıldığı için, bu bölümde istenen eklentilerin nasıl ekleneceğini ele alacağız. Maksimum Java kullanıcısının Eclipse kullandığını göz önünde bulundurarak, Eclipse'e jBPM eklentisinin nasıl ekleneceğini görelim.

İkili dosyaları aşağıdaki bağlantıdan indirin - http://download.jboss.org/drools/release/5.3.0.Final/

Drools'u burada gördüğünüzde kafanız karışmasın. Aynı eklentiler jBPM için kullanılır. Drools eklentisini zaten kurduysanız, kurulum adımlarını atlayabilirsiniz.

Sabit diskinize çıkarın. Ardından, Eclipse'i başlatın ve Yardım → Yeni Yazılım Kur'a gidin.

Tıklayın Add Repository -

Tıkla Local düğmesini ve ardından "... / binaries / org.drools.updatesite" öğesini seçin (makinenize indirdiğiniz yer)

Seçiniz Drools and jBPM ve sonra tıklayın Next buton.

Tekrar tıklayın Next "Lisans sözleşmesinin şartlarını kabul ediyorum" u seçin ve ardından Finish. Yazılım kurulumu başlar -

Başarılı bir kurulumun ardından aşağıdaki iletişim kutusunu göreceksiniz -

Tıklayın Yes. Eclipse yeniden başlar. Şimdi gidinWindows → Preferences → Drools → Drools Flow Nodes

Düğümleri yukarıdaki ekran görüntüsünde gösterildiği gibi görebiliyorsanız, bu eklentilerin başarıyla yüklendiğini kanıtlar. Artık ilk jBPM programımızı yazmaya hazırız.

Bu bölümde, jBPM kullanarak ilk programımız olan "Merhaba Dünya" yı yazacağız. Aşağıda verilen adımları izleyin -

Dosyaya Git → Yeni → Drools Projesi -

Tıklayın Next. İlk proje için uygun bir isim verin: "Merhaba Dünya" bizim durumumuzda.

Tıklayın Next. En alttaki iki onay kutusunu seçin, yani -

  • Bu projeye örnek bir HelloWorld işlem dosyası ekleyin
  • HelloWorld sürecini yüklemek ve yürütmek için örnek bir sınıf ekleyin

Tıklayın Next. Çalışma Alanı Ayarlarını Yapılandır'ı tıklayın (aşağıdaki ekran görüntüsünde kırmızıyla işaretlenmiştir) -

Tıkla Add düğmesi -

Tıkladığınızda Adddüğmesi, aşağıdaki ekran görünür. "Yeni bir Drools5 Çalışma Zamanı Oluştur" u tıklayın

Droolsjbpm-tools-distribution-5.3.0.Final.zip dosyasını indirdiğiniz ikili dosyalar klasörüne kadar yolu verin.

Ardından, Yüklü Drools Çalışma Zamanlarını seçin ve OK.

Aşağıdaki ekran belirir. TıklaFinish buton.

Şimdi Eclipse'de Paket Gezgini görünümünü açın. Aşağıdaki ekranı göreceksiniz -

ProcessTest.java class, ruleflow (rf) dosyasını yükleyen sınıftır ve ruleflow.rf HelloWorld projesi için oluşturulan temel kural akışıdır.

Çift tıklayın ruleflow.rf dosya ve aşağıdaki kural akışını görürsünüz -

GREEN daire iş akışının başlangıcını gösterirken, RED daire iş akışının sonudur.

Sol tarafta gösterilen panel, iş akışında kullanılan listelenen farklı bileşenlere sahiptir. BAŞLANGIÇ ve SON dışında, iş akışında kullanılabilecek birçok bileşen var ve bunları bir sonraki bölümde ele alacağız.

START ve END olayı arasındaki Merhaba, bir komut dosyası görevidir ve komut dosyası görevinin adı Hello. "Merhaba" komut dosyası görevinde hangi kodun yazıldığını görmek için Windows → Görünümü Göster → Diğer → Özellikler seçeneğine gidin.

Note - jBPM üzerinde çalışırken lütfen Özellikler görünümünü her zaman açık tutun çünkü tüm yapılandırmalar yalnızca özellikler görünümünde görülebilir.

Tıkla OKbuton. Şimdi seçinHello ve "Merhaba" etkinliğinin özelliklerini görebilirsiniz -

"Merhaba" olayının içine yazılan kodun tamamını görmek için, Action Emlak.

Kırmızı ile işaretlenen daire, eylem özelliğinin düzenlemesidir. Düzenle'ye tıkladığınızda -

Bunu düzenleyebilir ve yürütmek istediğiniz kodu "Merhaba" komut dosyası görevinin içine yazabilirsiniz. Düzenleyelim -

Tıklayın OK. Şimdi ProcessTest.java sınıfını açın ve bir Java Uygulaması olarak çalıştırın. Aşağıda verilen çıktıdır -

ProcessTest.java sınıfında kullanılan terimler, Drools için kullanılanlarla aynıdır. ProcessTest.java sınıfında dikkat edilmesi gereken nokta -

ksession.startProcess("com.sample.ruleflow");

İşlemi başlatmak için kodu yazdığınızda, dizge startProcess method, iş akışını açtığımızda id özelliğidir.

BPMS çekirdeği, BPM'nin kalbidir. Aşağıdaki çizim, BPMS çekirdeğini ve bileşenlerini göstermektedir.

Anlamsal Modül

Anlamsal modül, dil anlamını (her kelimenin ne anlama geldiğini) ve işlem motorunun yürütülmeye hazır olan iç yapıları için nasıl çevrileceğini tanımlar. Bu modül, temel olarak BPMN2 dilini anlamak için gerekli olan bilgileri içerir.

Süreç Motoru

Süreç motoru, iş süreçlerimizi fiilen yürütmekten sorumlu olanıdır. İşlem motoru, yeni işlem örnekleri oluşturmaktan ve bunların her biri için durumu korumaktan sorumludur. İşlem motoru kodunun içinde, iç yapılar, süreç tanımlarımızda yer alan her bir etkinliği temsil edecek şekilde tanımlanır. Bu süreç tanımlarını somutlaştırmak için kullanılan tüm mekanizmalar, bunları işlem motorunda tanımlandığı gibi çalıştıracaktır.

Kalıcılık ve İşlemler

Çoğu kurumsal uygulamada, tüm etkileşimler bir işlem sınırı içinde çalışmalı ve farklı sistemler, API'ler ve tasarımlarla uğraşmalıyız. Ayrıca, şunu tanımlamak için esnek bir mekanizmamız olmalı:

  • Uzun süren süreçlerle nasıl başa çıkılır

  • Süreç durumu ve işlemin işlediği bilgiler hakkındaki bilgileri nasıl ve ne zaman saklayabiliriz?

  • Süreç motoru işlemlerini nasıl ve ne zaman oluşturmamız, taahhüt etmemiz veya geri almamız gerekir

  • Hangi iş istisnaları, halihazırda yürütülen ticari eylemleri geri alabilir veya telafi edebilir

Yukarıdaki tüm noktalar, jBPM içindeki ısrar ve işlemler bileşeni kapsamındadır.

Denetim / Geçmiş Günlükleri

Bu modül, kullanıcıya süreçlerimizin nasıl yürütüldüğünü sorgulaması için bir yol sağlamakla görevlidir. Bu bilgiler, halihazırda sona ermiş süreçler hakkında tarihi bilgileri ve yürütülmekte olan süreçler hakkındaki en son bilgileri içerir.

Business Activity Monitoring (BAM) araçlar ve bilgi panoları, bu modül tarafından oluşturulan bilgiler için en yaygın istemcilerden bazılarıdır. The Audit/History Logs modülü, bu bilgileri uygun şekilde görüntülemek için tasarlanmış farklı araçlarla işbirliği yapacak yararlı bilgileri ve ölçütleri çıkarmak için yaygın olarak kullanılır.

Aşağıdaki ekran görüntüsü, jBPM 5'te bulunan çeşitli iş akışı bileşenlerini göstermektedir. Bu bileşenleri kullanarak, sürecinizi düzenlemek için bir iş akışı oluşturabilirsiniz.

Özel görevlerinizi de oluşturabilirsiniz, ancak bu daha sonra ele alınacaktır. Ek olarak, bir süreci düzenlemek için kullanılabilecek hizmet görevleri vardır.

  • Start Event- Bu, her işlemde çalıştırılan ilk düğümdür. İşleminizde yalnızca bir başlangıç ​​düğümü olabilir.

  • End Event- Bu düğüm sürecin sonunu bildirir. Bir işlemde bu tür bir düğümün birden fazla oluşumu olabilir.

  • Rule Task - Aynı adlandırılmış kapsam altındaki bir Drools Kuralları grubu olan RuleFlow grubunu değerlendiren bir düğümdür.

  • Gateway (diverge) aka Split- Bu belirli düğüm, süreçte yeni yollar / yollar oluşturur. İki veya daha fazla giden bağlantısı vardır. Mevcut üç farklı Bölme / Kapı arasından seçim yapabilirsiniz.

    • AND GATE - Sürecin akışının tüm giden bağlantılara aynı anda devam ettiği yer.

    • XOR GATE - İş akışında tanımlanan önceden tanımlanmış bazı kısıtlamalara göre yalnızca tek bir giden yola gider.

    • OR GATE - Akışın tüm giden kısıtlamaların değerlendirilmesine dayalı olarak ilerlediği ve bu yolun, kısıtlamanın doğru olarak değerlendirildiği yerde etkinleştirildiği yer.

  • Gateway (converge) aka Join- Bu birleşim, bölünmenin tersidir. Birden çok yolu tek bir yolla birleştirir. Dört farklı türde Birleştirme / geçit olabilir -

    • AND - Tüm dallar tamamlandığında akış devam eder.

    • XOR - En az bir dal tamamlandığında akış devam eder.

    • Discriminator- XOR gibi şubelerinden biri tamamlanmışsa devam eder. Ancak XOR'dan farklı olarak, tüm bağlantılar tamamlanana kadar diğer dalların tamamlamalarını kaydeder. Bu olduğunda, düğüm sıfırlanır ve gelen bir dal etkinleştirildiğinde ve döngü yeniden başladığında tekrar girilebilir.

    • N-of-M - Akış ne zaman devam eder? n sayısı mşubeler tamamlanır. Belirtmeniz gerekirn (sayı) kapıyı akıştan çıkmadan önce kaç dalın tamamlanması gerektiğine göre yapılandırırken.

  • Reusable Sub-Process- Başka bir süreci çağırır. Bu, birkaç küçük süreci daha büyük bir süreç haline getirmek için çok kullanışlıdır. Bu daha büyük olan bir koordinasyon süreci olabilir. Arama işlemini, aranan ucun tamamlanmasını beklemek ve aynı zamanda üst biriminin bağımsız bir yaşam döngüsüne sahip olmak için yapılandırabilirsiniz.

    • Script Task - Basit bir kod parçasını çalıştırabilen bir düğüm.

    • Timer Event- Bu tür bir düğüm bir zamanlayıcı başlatır ve zamanlayıcının süresi dolduğunda tetiklenir. Zamanla ilgili süreç ve tekrarlayan görevleri etkinleştirir.

    • Error Event- Bu tür bir düğüm, işlemdeki bir hata durumunu bildirir. Giden bağlantısı yoktur. Bir FaultName ve bir FaultVariable belirtir. Motor, FaultName ile eşleşen bir istisna işleyicisi arayacak ve FaultVariable tarafından tanımlanan değişkende Hata bilgilerini saklayacaktır.

  • Message Event- Önceden tanımlanmış türde bir olay yayınlandığında tetiklenir. Bu, dahili bir olay (işlem içinde bildirilen) veya harici (işlem motoru dışındaki bir harici varlık tarafından bildirilen) olabilir.

  • User Task- İnsan Görevi oluşturan bir düğüm. Bu İnsan Görevi, bir insan oyuncu tarafından tamamlanması gereken bir faaliyettir.

  • Embedded Sub-Process- Bir üst süreç içinde bir alt işlem oluşturmaya yardımcı olur. Kendi kapsamı olabilir. Bu, bazı karmaşık dalları izole etmek istediğiniz daha büyük işlemler için kullanışlıdır. Kendi değişkenleri ve istisna işleyicileri olabilir

  • Multiple Instances aka for Each- Bir öğe koleksiyonunun bir alt sürece beslenmesine izin verir. Daha küçük süreçleri oluşturmak ve koordine etmek için Yeniden Kullanılabilir Alt İşlemle birleştirildiğinde çok kullanışlıdır.

Bir iş akışı çizmek için, yukarıdaki makalede anlatıldığı gibi palette bulunan bileşenlerden herhangi birini kullanabilirsiniz. Tüm iş akışının bir başlangıcı olacaktır, ancak birden çok sonu olabilir.

Ekran görüntülerinin yardımıyla size bir iş akışının nasıl oluşturulacağını anlatacağım.

Burada boşluğu açtım rf veya bpmn dosya

Herhangi bir olay eklemek için, Bileşenler Paletinden belirli bir olayı seçin ve sağ tarafa sürükleyip bırakın. Örneğin, başlangıç ​​olayını seçtim ve onu sağ tarafa ve ayrıca bir ayrılma ağ geçidine sürükledim.

Şimdi, iki bileşeni birbirine bağlamamız gerekiyor. Sıra akışını seçin ve iki bileşeni bağlayın.

Bu şekilde bileşenleri düzenleyiciye sürükleyebilir ve farklı bileşenleri birleştirmek için sıralama akışını kullanabilirsiniz. Sadece bazı bileşenlerin yalnızca bir gelen ve bir giden bağlantıya sahip olacağına ve anlamlı bir akış oluşturmak için sıra akışını buna göre ayarlamaya ihtiyaç duyduğuna dikkat etmek gerekir.

İş akışını çizerken bazı özellikleri de ayarlamamız gerekiyor. Burada ayarlanacak tüm özellikleri gönderecek. Az önce bir akış oluşturdum, ancak oluşturulan iş akışında herhangi bir özellik belirlemediğim için ona ilk anda bakmak çok anlamlı olmayacak.

Yukarıda görebileceğiniz gibi, herhangi bir açıklaması olmayan boş bir iş akışıdır ve oluşturulan iş akışından hiçbir şey çıkarılamaz.

Bununla birlikte, daha fazla açıklamak için, bir başlangıç ​​bileşenim ve ardından bir sapma ağ geçidim var ve ayrılma ağ geçidinin durumuna bağlı olarak, bir yol seçeceğim ve komut dosyası görevinde bazı kodları çalıştıracağım ve ardından iş akışını sonlandıracağım. Bu yüzden, ayrıştırma ağ geçidi, ardından komut dosyası görevi ve yakınsama ağ geçidi için özellikleri ayarlamam gerekiyor.

Bu aşamada size iş akışımda bazı hatalar olduğunu ve daha sonra özellikleri ayarladığımda iş akışımda hiçbir hata olmayacağını göstereceğim, Bu nedenle oluşturulan iş akışının nasıl DOĞRULANACAĞINI göstereceğim.

İpucu - Doğrulayıcıların Windows → Tercihler → Doğrulama altında açık olduğunu unutmayın

Aşağıdaki ekran görüntüsü tutulmadaki ayarları göstermektedir.

Ekran görüntüsüne göre 4 hata olduğunu görebilirsiniz. İlk hata, komut dosyasının hiçbir eylemi olmadığını ve ardından başka bir hata, ağ geçidinin tanımlı türünün tanımlanmamış olmasıdır. Bu nedenle, iş akışını çalıştırabilmek için bu hataları gidermemiz gerekir.

Şimdi özellikleri tek tek belirleyeceğiz ve hataların kaybolduğunu göreceğiz.

İlk ağ geçidini (saptırma) seçin ve özelliklere tıklayın, ardından tipe tıklayın ve ihtiyacınıza göre geçidi seçin.

Ağ geçidini seçtikten sonra bir kısıtlama seçmeniz gerekir.

Kırmızı işaretli daireye tıklayın, aşağıdaki ekran görüntüsünü göreceksiniz

Düzenle'ye tıklayın ve ekran görüntüsüne göre ayrıntıları doldurun -

İçe Aktar'a tıklayın ve herhangi bir işlem yapacağımız sınıfı içe aktarın. Ekran görüntüsünde, örneğimizde kullanacağımız POJO yolcu uçağını içe aktardık.

Benzer şekilde, başka bir kısıtlama için ayrıntıları doldurun -

Şimdi tıklayın OK buton.

Tekrar tıklayın OK. Şimdi, komut dosyası görevini seçin ve farklı ağ geçidi için yaptığınız işlemin aynısını yapın.

Akışı göstermek için bir SOP (baskı ifadesi) ekledik. Komut dosyası görevinde herhangi bir java veya mvel kodu yazılabilir.

Benzer şekilde ikinci kısıtlama kodunu ekleyin -

Son olarak, sapma ağ geçidi için ağ geçidi türünü eklemeniz gerekir.

Şimdi, iş akışı dosyasını kaydedin ve sorunlar görünümüne gidin. Tüm sorunlar çözülecek.

Sorun görünümündeki hiçbir hata, oluşturulan iş akışında herhangi bir hata olmadığını göstermez. Bu, bir iş akışı nasıl oluşturulur ve jBPM'de doğrulanır.

Bu bölümde jBPM'nin nasıl uygulamaya konulacağını açıklamak için bir örnek alacağız. Mevcut görev, bir yolcunun gelirine bağlı olarak bir uçağa mı yoksa bir trene mi bineceğine karar vermek için jBPM'yi kullanmaktır.

Projeyi yaratma adımları, "Merhaba Dünya" projesiyle aynı kalır. .Rf dosyasını düzenleyicide açın ve değişiklikleri kırmızıyla işaretlenmiş olarak görün -

Yolcunun gelirine göre rotayı belirleyeceğimiz için burada, kural akışı kimliğini (benzersiz) değiştirdik ve değişken bir gelir ekledik.

How to set variable - Kırmızı ile işaretlenmiş düzenleme düğmesini seçin.

Tıkla Add düğmesi -

Aşağıdaki ekran açılır -

Adı gelir olarak ve türü Tamsayı olarak girin.

Tıklayın OK. Şimdi tanımlanan gelir değişkenini göreceksiniz.

ProcessTest.java sınıfında yapılacak değişiklikler (İşleminizi yüklemek ve çalıştırmak için sınıf) -

Map<String, Object> params = new HashMap<String, Object>();
params.put("income", 1200);

// start a new process instance
ksession.startProcess("vivek.ruleflow", params);

Bir MAP oluşturmanız ve MAP'deki değeri ayarlamanız ve bu değeri startProcess aşırı yüklenmiş yöntemine iletmeniz gerekir. Gösterildiği gibi, kural akışı kimliğini değiştirdik ve bu nedenle startProcess yönteminde aynı kimliği (vivek.ruleflow) kullandık.

ProcessTest.java sınıfını çalıştırmadan önce ProcessTest.java ile aynı pakette bir POJO Passenger.java oluşturun.

public class Passenger {
   private String name;
   private int income;
   Getters and setters here
}

Şimdi ProcessTest.java sınıfını bir Java Uygulaması olarak çalıştırın ve çıktıyı görün -

Change the value- params.put ("gelir", 900); ve sınıfı yeniden çalıştırın ve çıktıdaki değişikliği görün.