В этой статье рассказывается о развитии PAM, его преимуществах и проблемах. Я поделюсь своим опытом, который я узнал из моего последнего проекта.
PAM поставляется с Business-Central и Kiesever. Бизнес-центр имеет активы, которые помогают в построении потоков процессов и объектов домена и написании правил с использованием слюн. Kieserver — это среда выполнения для наших активов. PAM имеет встроенную базу данных H2, а также имеет опции для интеграции с другими базами данных, такими как Oracle, PostgreSQL и MySQL. PAM может быть развернут на любом сервере приложений или веб-сервере.
Типы архитектур:
- PAM может быть непосредственно встроен в приложение в виде библиотеки. Приложение будет общаться с PAM с помощью простых API.
- PAM может быть развернут как автономный. Приложение будет взаимодействовать с PAM с помощью API REST. Это следует за шаблоном разделения проблем. Таким образом, компоненты могут легко продаваться. Я буду говорить об этом позже.
- PAM можно развернуть как большое, сложное монолитное приложение. Он включает в себя пользовательский интерфейс (формы), Java и определения процессов в одном блоке. Это приносит все виды проблем, таких как ремонтопригодность и масштабируемость. Это не одна из наших любимых архитектур.
Давайте поговорим о ниже следуйте. Все компоненты могут быть построены как отдельные микросервисы. Существует четкое разделение ролей и обязанностей, поэтому их можно легко масштабировать.
Давайте начнем со сценария малого бизнеса. Сотрудник в компании хочет взять отпуск. Все, что нужно сделать сотруднику, — это заполнить форму заявления о перерыве. После этого они должны отправить форму своему руководителю на утверждение. Запрос также может быть отклонен автоматически, если у сотрудника не осталось свободного времени.
Сотрудник является объектом данных (POJO). Это будет вход в поток процесса. Поток процессов также имеет другие активы, такие как Задача пользователя, Задача бизнес-правила и шлюзы. Я также определил переменную процесса в потоке процесса, который является «приложением» типа Employee.
Входной JSON для потока процесса должен иметь следующий формат. Ключ «application» должен совпадать с именем переменной процесса. В обязательном порядке указать пакет, "com.dzone.leave.Employee"
.
JSON
xxxxxxxxxx
1
{ "application":{
2
3
"com.dzone.leave.Employee":{
4
5
"name": "First Name LastName",
6
7
"no" :3214
8
9
"requestedLeaves":15
10
11
} } }
Этот JSON будет опубликован в потоке процесса в тот момент, когда создание экземпляра процесса происходит посредством вызова REST. JSON сопоставляется с объектом Employee, и к нему можно получить доступ через переменную процесса или Kcontext из любой задачи BPM. Kcontext — это предопределенная переменная, которая ссылается на ProcessContext
объект.
Код Java можно добавить в любую задачу BPM, но старайтесь избегать сложного кода Jave. PAM не поставляется с IDE для проверки кода Java. Все происходит в веб-браузере.
PAM предоставляет REST URL для доступа к потокам процессов из приложения. Например, статус пользовательской задачи можно изменить, вызвав соответствующий REST-URL из приложения: http: // localhost: 8080 / kie-server / docs /
Давайте перейдем к задаче бизнес-правила . PAM предоставляет различные варианты построения правил. Я использовал шаблон управляемого правила, который помогает вам создавать сложные правила. Но вы должны знать, как использовать функции пользовательского интерфейса. Вот пример файла правил:
Простой текст
xxxxxxxxxx
1
rule "LeaveRule"
2
salience 10
3
ruleflow-group "gropup1"
4
dialect "mvel"
5
when
6
$emp : Employee( requestedLeaves < 15 )
7
then
8
$emp.setLeaveStts( "Approved" )
9
end
ruleflow-group «gropup1» is referred from the Business Rule task. You can have multiple rules and group them under one umbrella that you can refer to from the Process flow. The salience option can be used if the rules depend on each other. A higher salience value will have higher priority. The @watch
annotation is very useful in combination with the salience feature if the rules are dependent on each other. Sometimes, salience is very silent when there is a complex rule that has a dependency.
Cache Issues
There can be frequent code caching issues during development. Cache cleaning is required when multiple changes happen to the same file. Try the following commands to clean cache for JBoss EAP.
xxxxxxxxxx
rm -rf /opt/jboss-eap-7.2/standalone/tmp/* ;
rm -rf /opt/jboss-eap-7.2/standalone/data/* ;
rm -rf /root/.m2/repository/project/* ;
rm -rf /opt/jboss-eap-7.2/bin/repositories/kie/global/project/*
There are several additional challenges that you could be faced with. PAM tool gets stuck very often during development and has very volatile behavior. The lack of documentation and community support is very low. Despite, these, it’s a pretty simple tool to learn and can be very powerful when used correctly.