Статьи

Лучшие 3 способа разработки проектов на основе JBoss BPM Suite

В этой серии советов и приемов мы представляем некоторые технические аспекты работы с продуктами JBoss BRMS и JBoss BPM Suite, демонстрируя три основных способа, с помощью которых вы, как разработчик, можете создавать свои проекты на основе проектов, создаваемых бизнес-пользователями. JBoss BPM Suite (или JBoss BRMS). 

Разработчик в каждом из нас не всегда заинтересован в том, чтобы оставаться в рамках прекрасной 
 веб-панели
Business Central, как это предусмотрено, но работает с нашей любимой IDE для создания приложений, которые используют работу нашего бизнес-пользователя.

Мы ожидаем клонировать проект, созданный бизнес-пользователем, и создать его с нуля, или мы хотим встроить эту зависимость проекта и запустить наш проект на основе артефактов продукта, доступных нам в центральных репозиториях JBoss maven.

Мы также можем не доверять нашим бизнес-пользователям и хотеть создавать, запускать и анализировать некоторые модульные тесты, чтобы подтвердить, что этот материал, от которого мы зависим, работает должным образом.

Все эти действия основаны на том, что мы понимаем, какие артефакты продукта нам нужны, как проекты бизнес-пользователей строятся на панели инструментов их продуктов и как их создавать вне продукта, когда мы клонируем эти проекты.

В этой статье мы будем использовать 
демонстрационный проект Customer Evaluation в  качестве нашего рабочего примера, где вы можете найти различные аспекты этого в 
проекте, размещенном на github.com .

1. В зависимости от проектов Business Central

Когда бизнес-пользователи входят в систему и создают проект с правилами, событиями и / или процессами, это приводит к созданию JAR для 
знаний (KJAR)  после его создания. Этот KJAR является просто файлом JAR артефакта Maven, который по умолчанию помещается в локальный репозиторий, но его можно настроить так, чтобы он указывал на любой допустимый репозиторий Maven. 

Как разработчик, вы хотите использовать это как зависимость в своем проекте, так как это работает?

Нам нужно указать файл pom.xml нашего проекта разработки на соответствующий проект бизнес-пользователя, который будет построен из пакета JBoss BPM Suite с использованием демонстрационного проекта Customer Evaluation. Если вы посмотрите на этот проект, вы найдете pom.xml, который делает именно это: 
bpms-customer -valuation-demo / projects / customer -valuation-demo / pom.xml .

Найдите фрагмент кода в pom.xml ниже, чтобы увидеть, как проект добавляется в зависимости от ваших проектов разработки.

# Add this to your development projects pom.xml file as shown to depend on the 
# customer evaluation project build version 1.0.
#
<!-- KJar file from project. -->
<dependency>
  <groupId>customer</groupId>
  <artifactId>evaluation</artifactId>
  <version>1.0</version>
  <scope>compile</scope>
</dependency>

Далее мы рассмотрим, как вы можете добавить центральный репозиторий JBoss maven и использовать новейшие зависимости продукта JBoss BPM Suite.

2. Зависимости JBoss BPM Suite Maven

Репозиторий JBoss maven используется, как показано ниже, и будет указывать на последнюю версию продукта, которую мы хотим использовать, на момент написания этой статьи это был JBoss BPM Suite 6.0.2:

# Add this to your pom.xml as shown, or modify (exercise left to the reader)
# to add into your .m2/settings.xml file. 
#
<repositories>
  <repository>
    <id>jboss-maven-repository</id>
    <name>JBoss Maven Repository</name>
    <url>http://maven.repository.redhat.com/techpreview/all/</url>
    <layout>default</layout>
    <releases>
      <enabled>true</enabled>
      <updatePolicy>never</updatePolicy>
    </releases>
    <snapshots>
      <enabled>false</enabled>
      <updatePolicy>never</updatePolicy>
    </snapshots>
  </repository>
</repositories>

Далее мы хотим настроить модульный тест, который будет выполнять наши правила, события и процесс проекта. 

Вы можете найти это в настройке демонстрационного проекта Customer Evaluation с maven-зависимостями, используя центральное свойство pom.xml, чтобы указать на версию артефакта, которую мы используем в настоящее время. Далее нам нужна зависимость продукта для модульного тестирования нашего кода.

# Add this to your pom.xml as shown, or modify (exercise left to the reader)
# to add into your .m2/settings.xml file. 
#
<repositories>
  <repository>
    <id>jboss-maven-repository</id>
    <name>JBoss Maven Repository</name>
    <url>http://maven.repository.redhat.com/techpreview/all/</url>
    <layout>default</layout>
    <releases>
      <enabled>true</enabled>
      <updatePolicy>never</updatePolicy>
    </releases>
    <snapshots>
      <enabled>false</enabled>
      <updatePolicy>never</updatePolicy>
    </snapshots>
  </repository>
</repositories>

Бизнес центральный файл проекта.

Далее и последний раздел, как создавать проекты бизнес-пользователей, поскольку они клонируются непосредственно из внутреннего репозитория git продукта JBoss BPM Suite.

3. Строительные проекты вне Business Central

После завершения проекта для бизнес-пользователя, как показано выше с демонстрацией Customer Evaluation, вы хотите 
клонировать его через SSH, следуя предыдущей статье (ссылка)

# Cloning the business users customer evaluation demo project from the 
# command line.
#
$ git clone ssh://erics@localhost:8001/customer
Cloning into 'customer'...
The authenticity of host '[localhost]:8001 ([127.0.0.1]:8001)' can't be established.
DSA key fingerprint is ef:51:d6:ec:7f:ce:8b:e1:b6:a1:96:5e:6a:cf:d3:f8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[localhost]:8001' (DSA) to the list of known hosts.
Password authentication
Password: 

remote: Counting objects: 602, done
remote: Finding sources: 100% (602/602)
remote: Getting sizes: 100% (466/466)
remote: Compressing objects: 100% (118792/118792)
remote: Total 602 (delta 24), reused 72 (delta 21)
Receiving objects: 100% (602/602), 60.23 KiB, done.
Resolving deltas: 100% (344/344), done.

$ cd customer/evaluation/
$ ls -l
total 16
drwxr-xr-x  32 erics  501  1088 Aug 13 17:36 global
-rw-r--r--   1 erics  501   990 Aug 13 17:36 pom.xml
-rw-r--r--   1 erics  501    97 Aug 13 17:36 project.imports
drwxr-xr-x   4 erics  501   136 Aug 13 17:36 src

# When we try to build it breaks on the strange kie-maven-plugin
# found in the pom.xml.
#
$ mvn install
[INFO] Scanning for projects...
Downloading: http://repo.maven.apache.org/maven2/org/kie/kie-maven-plugin/6.0.3-redhat-4/kie-maven-plugin-6.0.3-redhat-4.pom
[WARNING] The POM for org.kie:kie-maven-plugin:jar:6.0.3-redhat-4 is missing, no dependency information available
Downloading: http://repo.maven.apache.org/maven2/org/kie/kie-maven-plugin/6.0.3-redhat-4/kie-maven-plugin-6.0.3-redhat-4.jar
Downloading: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar
Downloaded: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar (165 KB at 148.8 KB/sec)
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]   
[ERROR]   The project customer:evaluation:1.0 (/Users/erics/demo-projects/bpms6/bpms-customer-evaluation-demo/support/customer/evaluation/pom.xml) has 2 errors
[ERROR]     Unresolveable build extension: Plugin org.kie:kie-maven-plugin:6.0.3-redhat-4 or one of its dependencies could not be resolved: Could not find artifact org.kie:kie-maven-plugin:jar:6.0.3-redhat-4 in central (http://repo.maven.apache.org/maven2) -> [Help 2]
[ERROR]     Unknown packaging: kjar @ line 8, column 14
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException
[ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/PluginResolutionException

После клонирования вы заметите, что проект не будет собираться локально из-за отсутствующих зависимостей, в которых нуждается kie-maven-plugin. Если вы добавите их локально в файл pom.xml, он будет создан локально, но они будут управляться внутри продукта, когда бизнес-пользователь строит изнутри business central.

Рекомендуется не помещать эти изменения обратно в хранилище, а использовать их только извне. Как только вы сделаете это и добавите JBoss maven репозиторий, он будет построен за пределами централизованного инструментария бизнес-интерфейса.

01 # Add repositories and plugins for maven central to the pom.xml.
02 #
03 <repositories>
04 <repository>
05 <id>jboss-maven-repository</id>
06 <name>JBoss Maven Repository</name>
08 <layout>default</layout>
09 <releases>
10 <enabled>true</enabled>
11 <updatePolicy>never</updatePolicy>
12 </releases>
13 <snapshots>
14 <enabled>false</enabled>
15 <updatePolicy>never</updatePolicy>
16 </snapshots>
17 </repository>
18 </repositories>
19 <pluginRepositories>
20 <pluginRepository>
21 <id>jboss-maven-repository</id>
22 <name>JBoss Maven Repository</name>
24 <layout>default</layout>
25 <releases>
26 <enabled>true</enabled>
27 <updatePolicy>never</updatePolicy>
28 </releases>
29 <snapshots>
30 <enabled>false</enabled>
31 <updatePolicy>never</updatePolicy>
32 </snapshots>
33 </pluginRepository>
34 </pluginRepositories>
35
36 # Add the dependencies needed.
37 #
38 <dependencies>
39 <dependency>
40 <groupId>org.kie</groupId>
41 <artifactId>kie-api</artifactId>
42 <version>6.0.3-redhat-4</version>
43 <scope>provided</scope>
44 </dependency>
45 <dependency>
46 <groupId>org.jbpm</groupId>
47 <artifactId>jbpm-bpmn2</artifactId>
48 <version>6.0.3-redhat-4</version>
49 <scope>provided</scope>
50 </dependency>
51 </dependencies>
52
53 # Now you can build it in your IDE.
54 #
55 $ mvn package
56 [INFO] Scanning for projects...
57 [INFO
58 [INFO] ------------------------------------------------------------------------
59 [INFO] Building customer-evaluation 1.0
60 [INFO] ------------------------------------------------------------------------
61 [INFO]
62 [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ evaluation ---
63 [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
64 [INFO] Copying 11 resources
65 [INFO]
66 [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ evaluation ---
67 [INFO] Changes detected - recompiling the module!
68 [WARNINGFile encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
69 [INFO] Compiling 2 source files to /Users/erics/demo-projects/bpms6/bpms-customer-evaluation-demo/support/customer/evaluation/target/classes
70 [INFO]
71 [INFO] --- kie-maven-plugin:6.0.3-redhat-4:build (default-build) @ evaluation ---
72 SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
73 SLF4J: Defaulting to no-operation (NOP) logger implementation
74 SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
75 [INFO] KieModule successfully built!
76 [INFO]
77 [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ evaluation ---
78 [INFO] Nothing to compile - all classes are up to date
79 [INFO]
80 [INFO] --- maven-surefire-plugin:2.17:test (default-test) @ evaluation ---
81 [INFO] No tests to run.
82 [INFO]
83 [INFO] --- maven-jar-plugin:2.5:jar (default-jar) @ evaluation ---
84 [INFO] Building jar: /Users/erics/demo-projects/bpms6/bpms-customer-evaluation-demo/support/customer/evaluation/target/evaluation-1.0.jar
85 [INFO] ------------------------------------------------------------------------
86 [INFOBUILD SUCCESS
87 [INFO] ------------------------------------------------------------------------
88 [INFO] Total time: 7.086s
89 [INFO] Finished at: Wed Aug 13 17:56:33 CEST 2014
90 [INFO] Final Memory: 36M/447M
91 [INFO] ------------------------------------------------------------------------

Надеюсь, это поможет вам начать работу, когда вы попытаетесь интегрировать свой проект разработки с различными возможностями, предлагаемыми продуктом JBoss BPM Suite (и JBoss BRMS).