Activiti 7 Derin Dalış Serisi - Bir İş Süreci Tasarlamak için Modelleyiciyi Kullanma
Giriş
Activiti 7 Derin Dalış Makale Serisi
Önkoşullar
Activiti Modeler Uygulamasını Çalıştırma
Süreç Uygulaması Oluşturma
Süreç Tanımı Oluşturma
Örnek Süreç Tanımı BPMN 2.0 XML
Giriş
Activiti 7 beta 2, bu yazıda göz atacağımız yeni bir BPMN modelleme uygulamasıyla birlikte geliyor. BPMN 2.0 standardını destekler. Alfresco Uygulama Geliştirme Çerçevesi (ADF) yardımıyla geliştirilmiştir. Kaynak kodu burada mevcuttur.
Activiti 7 Derin Dalış Makale Serisi
Bu makale, Activiti 7'yi ayrıntılı olarak ele alan makaleler dizisinin bir parçasıdır, listelenen sırayla okunmalıdır:
Bir İş Sürecini Dağıtma ve Yürütme
Bir İş Süreci Tasarlamak için Modelleyiciyi Kullanma - bu makale
Özel Bir İş Süreci Oluşturma, Dağıtma ve Çalıştırma
Çekirdek Kitaplıklarını Kullanma
Ön koşullar
Activiti 7 Cloud'a Başlarken makalesini okudunuz ve üzerinde çalıştınız ve Activiti 7 Tam Örneği çalışıyor mu?
Business Process Model and Notation (BPMN) 2.0'ı biliyorsunuz ve iş süreçlerini daha önce, hatta belki de Activiti'nin önceki sürümlerinde tasarladınız ve oluşturdunuz. Bu makale, BPMN ile iş süreçlerinin nasıl tasarlanacağı konusunda çok fazla bilgi vermeyecektir.
Activiti Modeler Uygulamasını Çalıştırma
Önceki makalede yaptığımız Activiti dağıtımı, modelleyiciyi zaten hazır ve çalışır hale getirdi. Çalıştırmadıysanız, geri dönün ve o makaledeki talimatlara göre çalıştırın. Modelleyiciye http://activiti-cloud-gateway. <IP> .nip.io/activiti-cloud-modeling URL'si aracılığıyla erişebilirsiniz. Bu kullanıcı, modelleme yeteneklerini kullanma haklarına sahip olan ACTIVITI_MODELER rolünün bir parçası olduğundan, modeler / password ile oturum açın, şimdi şunu görmelisiniz:
Önceki makalede modelleyiciye ilk kez eriştiğinizde bir uygulama oluşturduysanız bir uygulama görebilirsiniz.
Süreç Uygulaması Oluşturma
Bir süreç tanımı, Süreç Uygulaması adı verilen bir uygulamada bulunur. Süreç tanımımızı içerecek bir tane oluşturalım. Yeni oluştur'u tıklayın | Başvurun ve ona bir isim ve açıklama verin:
Yeni Süreç Uygulamasını oluşturmak için Oluştur düğmesine tıklayın:
Şimdi, modellemeye başlamak için Sample App uygulamasına tıklayın:
Süreç Tanımı Oluşturma
Bir Süreç Uygulaması birden fazla Süreç Tanımı içerebilir, bu nedenle iş sürecini modellemeye başlamadan önce bir tane oluşturmamız gerekir. Yeni oluştur | Süreç menü öğesi:
Bu, sizi Süreç Tanımının adını ve açıklamasını girdiğiniz bir forma götürmelidir:
Yeni Süreç Tanımını oluşturmak için Oluştur düğmesine tıklayın ve sonuç:
Şimdi, BPMN 2.0 modellemeyi başlatmak için sol gezinme bölmesindeki Örnek sürece tıklayın:
Ortadaki tuvalde zaten bir başlangıç düğümümüz var. Şimdi örnek sürecimiz için istediğimiz faaliyetlere devam edelim.
Yeni bir Kullanıcı Görevi ekleyerek başlayalım, sol araç çubuğunda içinde bir kişi simgesi bulunan dikdörtgeni seçin ve ardından Kullanıcı Görevini tuvale sürükleyip bırakın. Kullanıcı Görevi 1 olarak adlandırın:
Kullanıcı görevini belirli bir kullanıcıya atamak istiyoruz (yani süreç vakasının başlatıcısına değil). Keycloak'ta aralarından seçim yapabileceğimiz aşağıdaki kullanıcılar var:
Tuval üzerindeki kullanıcı görevine tıklayın ve ardından Özellikler bölmesinde sağdaki test kullanıcısı olarak Atanan'ı doldurun, ardından atanan değeri kaydetmek için alandan sonra onay düğmesine tıklayın:
Ardından, Kullanıcı görevinden sonra bir Servis Görevini tuvale sürükleyip bırakın ve bunu Servis Görevi 1 olarak adlandırın:
Hizmet Görevini uygulamak için Bulut Bağlayıcıları adı verilen bir şey kullanıyoruz, kendi kapsayıcılarında kendi süreçleri olarak çalışıyorlar, bu da süreç yürütmeden ayrı olarak ölçeklenebilecekleri ve yönetilebilecekleri anlamına geliyor.
Cloud Connector uygulamaları, standart uygulama özelliğiyle belirtilir. Service Task 1'e tıklayın ve ardından uygulama özelliğini serviceTask1Impl değeriyle aşağıdaki gibi doldurun:
Hizmet Görevi tanımındaki uygulama özelliği değeri, bir Spring Cloud Stream kanalı hedef adı olarak kullanılacaktır (bağlı ara yazılım RabbitMQ üzerinde). Bu nedenle, bir sonraki makalede oluşturacağımız özel Bulut Bağlayıcısının spring.cloud.stream.bindings. <channel> .destination özellik değeriyle bu ada bağlı bir tüketici oluşturduğundan emin olmalıyız.
Şimdi bir Bitiş düğümü ekleyin ve ardından sağ üst köşedeki diske tıklayarak tüm süreç tanımını kaydedin. Ayrıca, kaydet düğmesinin yanındaki indirme düğmesine tıklayarak yeni süreç tanımı için XML'yi indirdiğinizden emin olun.
Önemli, oturum zaman aşımının süresi dolduysa ve kaydedemiyorsanız, sadece indirip tekrar oturum açtığınızda süreç tanımını içe aktarın.
Activiti'nin önceki sürümlerinde süreç dinleyicileri ve görev dinleyicileri ile çalışmaya alışkın olabilirsiniz. Dinleyiciler, süreç yürütme sırasında olaylar tarafından tetiklenen bir süreç tanımı içinde kanca noktaları uygulayan BPMN 2.0'ın bir Activiti uzantısıdır. Activiti 7'de, süreç motoru tarafından yayılan olayları dinleyerek "dinleyici" işlevselliğini uygulayabiliriz. Bu, olaylar eşzamansız ve Activiti dinleyicileri eşzamanlı olduğundan Bulut dağıtımları için daha iyidir. Özel bir Bulut Bağlayıcısı uyguladığımızda, olay işleyicilerin nasıl uygulanacağına bir sonraki makalede bakacağız.
Örnek Süreç Tanımı BPMN 2.0 XML
Dışa aktarılan BPMN 2.0 örnek süreç tanımı şuna benzer (Kullanıcı görevini atanan kişiyle ve Hizmet Görevini uygulama özniteliğiyle doğru şekilde ayarladığınızdan emin olun):
<?xml version="1.0" encoding="UTF-8"?> <bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:activiti="http://activiti.org/bpmn" id="sample-diagram" targetNamespace="http://bpmn.io/schema/bpmn" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> <bpmn2:process id="sampleproc-e9b76ff9-6f70-42c9-8dee-f6116c533a6d" name="Sample Process" isExecutable="true"> <bpmn2:documentation /> <bpmn2:startEvent id="StartEvent_1"> <bpmn2:outgoing>SequenceFlow_0qdq7ff</bpmn2:outgoing> </bpmn2:startEvent> <bpmn2:userTask id="UserTask_0b6cp1l" name="User Task 1" activiti:assignee="testuser"> <bpmn2:incoming>SequenceFlow_0qdq7ff</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_1sc9dgy</bpmn2:outgoing> </bpmn2:userTask> <bpmn2:sequenceFlow id="SequenceFlow_0qdq7ff" sourceRef="StartEvent_1" targetRef="UserTask_0b6cp1l" /> <bpmn2:serviceTask id="ServiceTask_1wg38me" name="Service Task 1" implementation="serviceTask1Impl"> <bpmn2:incoming>SequenceFlow_1sc9dgy</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_0t37jio</bpmn2:outgoing> </bpmn2:serviceTask> <bpmn2:sequenceFlow id="SequenceFlow_1sc9dgy" sourceRef="UserTask_0b6cp1l" targetRef="ServiceTask_1wg38me" /> <bpmn2:endEvent id="EndEvent_0irytw8"> <bpmn2:incoming>SequenceFlow_0t37jio</bpmn2:incoming> </bpmn2:endEvent> <bpmn2:sequenceFlow id="SequenceFlow_0t37jio" sourceRef="ServiceTask_1wg38me" targetRef="EndEvent_0irytw8" /> </bpmn2:process> <bpmndi:BPMNDiagram id="BPMNDiagram_1"> <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="sampleproc-e9b76ff9-6f70-42c9-8dee-f6116c533a6d"> <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"> <dc:Bounds x="105" y="121" width="36" height="36" /> <bpmndi:BPMNLabel> <dc:Bounds x="78" y="157" width="90" height="20" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="UserTask_0b6cp1l_di" bpmnElement="UserTask_0b6cp1l"> <dc:Bounds x="233" y="98.5" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_0qdq7ff_di" bpmnElement="SequenceFlow_0qdq7ff"> <di:waypoint x="141" y="139" /> <di:waypoint x="283" y="139" /> <bpmndi:BPMNLabel> <dc:Bounds x="212" y="117.5" width="0" height="13" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ServiceTask_1wg38me_di" bpmnElement="ServiceTask_1wg38me"> <dc:Bounds x="422" y="99" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_1sc9dgy_di" bpmnElement="SequenceFlow_1sc9dgy"> <di:waypoint x="333" y="139" /> <di:waypoint x="422" y="139" /> <bpmndi:BPMNLabel> <dc:Bounds x="377.5" y="117" width="0" height="13" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="EndEvent_0irytw8_di" bpmnElement="EndEvent_0irytw8"> <dc:Bounds x="611" y="121" width="36" height="36" /> <bpmndi:BPMNLabel> <dc:Bounds x="629" y="160" width="0" height="13" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_0t37jio_di" bpmnElement="SequenceFlow_0t37jio"> <di:waypoint x="522" y="139" /> <di:waypoint x="611" y="139" /> <bpmndi:BPMNLabel> <dc:Bounds x="566.5" y="117" width="0" height="13" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> </bpmn2:definitions>
bpmndi:BPMNDiagram diyagramı bölümü, süreç tanımı grafik düzenini tanımlar.
Sonraki makalede, bu süreç tanımını içeren özel bir Çalışma Zamanı Paketi ve Hizmet Görevi için bir uygulama sağlayacak özel bir Bulut Bağlayıcısı oluşturacağız.