Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

pl:dydaktyka:bim:lab2_2014 [2015/12/02 12:32]
kkluza [Instalacja wtyczki m2e]
pl:dydaktyka:bim:lab2_2014 [2019/06/27 15:50]
Linia 1: Linia 1:
-====== Lab 2: Podstawy pracy z Activiti Designerem ====== 
- 
-Webowy Activiti Modeler ma spore ograniczenia. 
-Więcej możliwości daje projektantom procesów eclipsowy Activiti Designer, 
-w którym można specyfikować dodatkowe właściwości elementów. ​ 
-W związku z tym dziś przeniesiemy nasz model do Eclipsa, ​ 
-a ponadto przygotujemy dla niego jUnit test. 
- 
-===== Instalacja wtyczki m2e ===== 
- 
-W przypadku, gdy brakowałoby odpowiedniej wtyczki m2e w środowisku eclipse, \\ 
-proszę ją doinstalować ze strony: [[http://​download.eclipse.org/​technology/​m2e/​releases|wtyczkę m2e (Maven Integration for Eclipse)]] w wersji 1.4.1. \\ 
-Gdyby brakowało slf4j, można doinstalować je z innego repozytorium,​ np. http://​www.fuin.org/​p2-repository/​.\\ 
-Po instalacji należy zrestartować eclipse'​a. 
- 
-===== Utworzenie projektu i modelu =====  
- 
-Proszę w eclipsie stworzyć nowy projekt: ​ 
-**New -> Project...**,​ następnie **Activiti -> Activiti Project**. 
- 
-W związku z tym, że wtyczka była dla starej wersji Activiti, 
-a my będziemy używali najnowszej wersji, \\ 
-zmieniamy w pliku ''​pom.xml''​ wersję Actviti na 5.XX (gdzie XX to odpowiednia wersja).\\ 
-Obejrzyj również plik konfiguracyjny opisujący tryb działania Activiti ​ 
-''​activiti.cfg.xml'',​ powinien być w katalogu: ''​src/​main/​resources/''​.\\ 
-Następnie skonwertuj projekt: **Configure -> Convert to Maven Project** 
- 
-Dodajemy do projektu w: **src/​main/​resources/​java** 
-pusty diagram Activiti (**New->​Other...,​ Activiti -> Activiti Diagram**).\\ 
-Proszę teraz zamodelować jakiś najprostszy proces. 
- 
-===== Testowanie modelu =====  
- 
-Prawym klawiszem na diagramie w drzewie projektu wybieramy: 
-**Activiti->​Generate unit test**.\\ 
-W ''​src/​test/​java/​org/​activiti/​designer/​test''​ powinien pojawić się nasz JUnit test. 
- 
-Proszę uruchomić JUnit test i sprawdzić, czy test przeszedł poprawnie. 
- 
-Używając [[http://​activiti.org/​javadocs/​org/​activiti/​engine/​test/​ActivitiRule.html|ActivitiRule]] ​ 
-mamy dostęp do odpowiednich serwisów zapewniających interfejsy do różnych funkcjonalności: ​ 
-  * **[[http://​www.activiti.org/​javadocs/​org/​activiti/​engine/​RepositoryService.html|RepositoryService]]** -- zapewnia funkcjonalność do wdrażania, wykonywania zapytań, czy usuwania procesów, 
-  * **[[http://​www.activiti.org/​javadocs/​org/​activiti/​engine/​RuntimeService.html|RuntimeService]]** -- zapewnia interfejs do uruchamiania i wykonywania zapytań do instancji procesów (również ich zmiennych), 
-  * **[[http://​www.activiti.org/​javadocs/​org/​activiti/​engine/​IdentityService.html|IdentityService]]** -- zapewnia interfejs do autentykacji. 
-  * **[[http://​activiti.org/​javadocs/​org/​activiti/​engine/​TaskService.html|TaskService]]** -- zapewnia interfejs do zarządzania zadaniami. ​ 
-  * **[[http://​activiti.org/​javadocs/​org/​activiti/​engine/​FormService.html|FormService]]** -- zapewnia interfejs do zarządzania formularzami. ​ 
- 
-<code java> 
-RepositoryService repositoryService = activitiRule.getRepositoryService();​ 
-RuntimeService runtimeService ​      = activitiRule.getRuntimeService();​ 
-IdentityService identityService ​    = activitiRule.getIdentityService();​ 
-TaskService taskService ​            = activitiRule.getTaskService();​ 
-FormService formService ​            = activitiRule.getFormService();​ 
-</​code>​ 
- 
- 
-===== Rozszerzenie testu =====  
- 
-Przy użyciu interfejsu dostępnego poprzez ''​TaskService''​ oraz ''​FormService''​ proszę przetestować model z poprzednich zajęć (jak poniżej, ew. bez zdarzenia czasowego) dla dwóch scenariuszy (wybór każdej ze ścieżek po bramie XOR).  
- 
-{{:​pl:​dydaktyka:​bim:​lab2:​process5-eclipse-example.png?​800|}} 
- 
-Przydatne fragmenty kodu: 
- 
-  * autentykacja użytkownika (w tym wypadku: kermit): 
-<code java> 
-identityService.setAuthenticatedUserId("​kermit"​);​ 
-</​code> ​ 
-  * interfejs do pobrania listy zadań dla określonego użytkownika:​ 
-<code java> 
-List<​Task>​ taskList = taskService.createTaskQuery().processInstanceId(arg0).taskAssignee(arg0).list() 
-</​code>​ 
-  * jeśli zadanie zostało ukończone prawidłowo,​ możemy wywołać: 
-<​code>​ 
-taskService.complete(arg0);​ 
-</​code>​ 
-  * interfejs do przeglądania formularzy: 
-<code java> 
-FormService formService = processEngine.getFormService();​ 
-TaskFormData taskFormData = formService.getTaskFormData(taskList.get(0).getId());​ 
-List<​FormProperty>​ formList = taskFormData.getFormProperties();​ 
-</​code>​ 
- 
-Więcej informacji dostarczy [[http://​activiti.org/​javadocs/​|Activiti API]]. 
- 
-===== Uruchamianie modelu =====  
- 
-Na bazie kodu używanego w testach możemy również napisać prosty program, który uruchomi silnik procesowy dla określonego procesu. ​ 
- 
-W samodzielnej aplikacji można utworzyć silnik procesowy przy użyciu: 
-<code java> ProcessEngine processEngine = pc.buildProcessEngine(); ​ </​code>​ 
-i następnie tak jak poprzednio mieć dostęp do odpowiednich serwisów zapewniających interfejsy do różnych funkcjonalności:​ 
- 
-<code java OfferProcessingExecution.java>​ 
-import java.util.*;​ 
-import org.activiti.engine.*;​ 
-import org.activiti.engine.runtime.ProcessInstance;​ 
- 
-public class OfferProcessingExecution { 
-  
- public static void main(String [] args) 
- { 
- ProcessEngineConfiguration pc = ProcessEngineConfiguration 
- .createStandaloneInMemProcessEngineConfiguration();​ 
-  
- ProcessEngine processEngine = pc.buildProcessEngine(); ​ 
- RepositoryService repositoryService = processEngine.getRepositoryService();​ 
- RuntimeService runtimeService = processEngine.getRuntimeService();​ 
- IdentityService identityService = processEngine.getIdentityService();​ 
- repositoryService.createDeployment() 
- .addClasspathResource("​diagrams/​nazwa.bpmn20.xml"​) ​ /* nazwa pliku */ 
- .deploy();​ 
-  
- Map<​String,​ Object> variableMap = new HashMap<​String,​ Object>​();​ 
- variableMap.put("​descriptionType",​ "​short"​);​ 
- ... 
- identityService.setAuthenticatedUserId("​kermit"​); ​     
- ProcessInstance processInstance =                     /* podac id procesu z diagramu */ 
-                                      runtimeService.startProcessInstanceByKey("​process-id",​ variableMap);​  ​     ​ 
- System.out.println("​process instance id: " + processInstance.getId());​ 
- } 
-} 
-</​code>​ 
- 
-Proszę zapoznać się z [[http://​activiti.org/​javadocs/​|Activiti Engine API]] i rozbudować aplikację do obsługi procesu. 
- 
-Jedną z możliwości jest np. uruchomienie naszego procesu z ustawionymi parametrami,​ jak w jUnit teście, ale w trakcie działania w konsoli w odpowiednim momencie zapytanie o zmienną ''​Specifications details'',​ następnie ustawienie tej wartości jako zmiennej procesu (do ustawienia wartości można użyć funkcji: [[http://​activiti.org/​javadocs/​org/​activiti/​engine/​RuntimeService.html#​setVariable%28java.lang.String,​%20java.lang.String,​%20java.lang.Object%29|RuntimeService.setVariable]]). 
- 
-Przykład działania takiej aplikacji: ​ 
- 
-{{:​pl:​dydaktyka:​bim:​lab2:​eclipse-execution-example.png|}} 
  
pl/dydaktyka/bim/lab2_2014.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0