среда, 22 сентября 2010 г.

Блог переехал!!!

Уважаемые читатели, мой блог переехал по адресу: http://www.bpmylife.ru
В данный блог информацию я выкладывать больше не буду, читайте теперь на новом ресурсе.

С уважением, Евгений Попов

четверг, 9 сентября 2010 г.

Дамп базы Intalio

Забыл сказать, что базу Intalio надо дампить с ключом max_allowed_packet, иначе при достижении определенного объема будет дампиться не вся база
mysqldump --max_allowed_packet=500M

Эту статью Вы можете прочитать на новом блоге 

пятница, 23 июля 2010 г.

SugarCRM... начало!

Немного отвлекусь от BPMS. В скором времени набросаю пару статей по SugarCRM и Talend'у. У нас появилась необходимость перехода с одной CRM на SugarCRM.
Выбор пал на SugarCRM по следующим причинам:
- OpenSource;
- "дружит" с SOAP (в коробке уже есть веб-сервис);
- является весьма масштабируемой, также на sugarforge выложено большое количество модулей, как для разработчиков, так и готовых решений;
- модульная конструкция. Впечатление, что она пластилиновая...;
- распространенность в рамках OSS;
- легко подается кастомизации;

В sugarCRM есть конечно подводные камни, но их найти достаточно просто, т.к. написана она на PHP + javascript.

Для перегона базы использовал Talend.

Эту статью Вы можете прочитать на новом блоге 

среда, 14 июля 2010 г.

Edit Shugar Dashlet по-умолчанию не работает

Занялся настройкой SugarCRM, и был несколько "сконфужен" тем, что не работает редактор Dashlet'ов. А без него настроить панели можно только "накодив". Решение нашлось на: http://www.sugarcrm.com/forums/showthread.php?t=55757.

В файл [SugarCRM]/include/generic/SugarWidgets/SugarWidgetFieldvarchar.php достаточно добавить следующий код, и редактор включиться:

function
SugarWidgetFieldVarchar(&$layout_manager)
{
parent::SugarWidgetReportField($layout_manager);


Эту статью Вы можете прочитать на новом блоге 

среда, 9 июня 2010 г.

Удаление задач (PA - People Activity) после завершения процесса

Если вы еще не сталкивались со сложностью удаления активных форм (People Activity), то у Вас все еще впереди. По-умолчанию, если Ваш процесс завершается, то существующие активные формы не завершаются, а остаяются "висеть". Для операции удаления "подвисших" задач требуются некоторые пляски с бубном, которые я и собираюсь описать в данной статье.

Для удаления задач на понадобятся следующие сервисы (расположены в порядке использования):

1. TaskManagementService.wsdl

В данном сервисе нам понадобиться операция GetAvailableTasks. На самом деле очен интересная операция, если бы не www.github.com то я бы долго искал нужные параметры к этой операции.

Теперь подробнее о самой операции, а точне о ее параметрах:
- participantToken - идентификатор пользователя, из под которого мы будем запускать search задач, соответственно нужно, чтобы у этого пользователя был доступ к удаляемой форме.
- taskType - для нашего случа нужно использовать "PATask" - это People Activity task. Можно еще использовать PIPATask или Tasks. Но тогда буду другими и запросы, т.к. данные на выходе будут отличаться.
- subQuery - "T._state = TaskState.READY and T._instanceId='" в instanceId подставляем PID ($ode:pid) процесса из которого удаляем задачи. Т.е. строка будет выглядеть примерно так: "T._state = TaskState.READY and T._instanceId='3321'", где 3321 - PID процесса с задачами, которые надо удалить
- first - первая выводимая задача начальная задача
- max - максимальное выводимое число задач

2. InstanceManagement.wsdl
Операция delete:
- filter - "iid=3321", где 3321 - PID процесса с задачами, которые надо удалить

Операцией delete мы удаляем запущенный Instance процесса из ODE

3. CompleteTask.wsdl
Операция SkipTask:
- taskId - id задачи, берем из массива возвращенного операцией GetAvailableTasks. (Например: $tnsGetAvailableTasksResponseMsg.GetAvailableTasksResponse->task[*]->taskId
- participantToken - идентификатор пользователя

Операцие SkipTask мы "пропускаем" задачу и тем самым удаляем ее из Tempo

Через пару дней ыложу проект с примером.

Эту статью Вы можете прочитать на новом блоге

Настройка JasperServer на работу с Active Directory

Пришло время настроить авторизацию в JasperServer через ActiveDirectory. Для этого необходимо поднастроить конфиги и скачать spring-ldap-1.3.0.RELEASE-all.jar

Скачанный spring-ldap-1.3.0.RELEASE-all.jar нужно скопировать в [JaperServer folder]/apache-tomcat/webapps/jasperserver/WEB-INF/lib

Теперь надо подправить конфиг для использования LDAP. Файл с настройками называется applicationContext-security.xml. Ниже приведен пример настройки на LDAP. В файле applicationContext-security.xml надо найти строку ====AUTHENTICATION==== оттуда начинаются правки. Строки с настройками для LDAP выделены красным цветом

<!-- ======================== AUTHENTICATION ======================= -->
<bean id="authenticationManager" class="org.springframework.security.providers.ProviderManager">
<property name="providers">
<list>
<!-- not on by default-->
<ref local="ldapAuthenticationProvider"/>
<ref bean="${bean.daoAuthenticationProvider}"/>
<ref local="anonymousAuthenticationProvider"/>
<!--ref local="jaasAuthenticationProvider"/-->
</list>
</property>
</bean>

<bean id="daoAuthenticationProvider" class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
<!-- jdbcDaoImpl -->
<!-- <property name="userDetailsService"><ref bean="inMemoryDaoImpl"/></property> -->
<property name="userDetailsService"><ref bean="${bean.internalUserAuthorityService}"/></property>
<property name="passwordEncoder"><ref local="passwordEncoder"/></property>
</bean>

<bean id="passwordEncoder" class="com.jaspersoft.jasperserver.api.metadata.common.service.impl.PasswordCipherer" lazy-init="false">
<property name="allowEncoding"><value>true</value></property>
<property name="keyInPlainText"><value>false</value></property>
<property name="secretKey"><value>0xC8 0x43 0x29 0x49 0xAE 0x25 0x2F 0xA1 0xC1 0xF2 0xC8 0xD9 0x31 0x01 0x2C 0x52 0x54 0x0B 0x5E 0xEA 0x9E 0x37 0xA8 0x61</value></property>
<property name="secretKeyAlgorithm"><value>DESede</value></property>
<property name="cipherTransformation"><value>DESede/CBC/PKCS5Padding</value></property>
</bean>

<bean id="anonymousProcessingFilter" class="org.springframework.security.providers.anonymous.AnonymousProcessingFilter">
<property name="key"><value>foobar</value></property>
<property name="userAttribute"><value>anonymousUser,ROLE_ANONYMOUS</value></property>
</bean>

<bean id="anonymousAuthenticationProvider" class="org.springframework.security.providers.anonymous.AnonymousAuthenticationProvider">
<property name="key"><value>foobar</value></property>
</bean>

<bean id="initialDirContextFactory" class="org.springframework.security.ldap.DefaultInitialDirContextFactory">
<!--Путь к пользователям (верхний уровень) -->
<constructor-arg value="ldap://inside.lavtech.ru:389/OU=OU,OU=Lavtech,DC=inside,DC=lavtech,DC=ru"/>

<!-- You may not need the next propertiesD-->
<!--Путь к менеджеру контроллера домена (для поиска пользователей) -->
<property name="managerDn"><value>CN=adtest,CN=Users,DC=inside,DC=lavtech,DC=ru</value></property>
<!--пароль менеджера контроллера домена -->
<property name="managerPassword"><value>123456</value></property>
</bean>

<bean id="userSearch"
class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch">
<constructor-arg index="0">
<value></value>
</constructor-arg>
<constructor-arg index="1">
<!--Логин берем из аттрибута sAMAccountName -->
<value>(sAMAccountName={0})</value>
</constructor-arg>
<constructor-arg index="2">
<ref local="initialDirContextFactory" />
</constructor-arg>
<!-- Поиск в подуровнях-->
<property name="searchSubtree">
<value>true</value>
</property>
</bean>

<!--
For LDAP authentication
-->

<bean id="ldapAuthenticationProvider" class="org.springframework.security.providers.ldap.LdapAuthenticationProvider">
<constructor-arg>
<bean class="org.springframework.security.providers.ldap.authenticator.BindAuthenticator">
<constructor-arg><ref local="initialDirContextFactory"/></constructor-arg>
<!-- авторизуемся по этому аттрибуту-->
<property name="userDnPatterns"><list><value>sAMAccountName={0}</value></list></property>
<property name="userSearch" ref="userSearch"/>
</bean>
</constructor-arg>
<constructor-arg>
<!-- разобраться с ролями (возможно есть верятность, что можно использовать роли из ActiveDirectory)-->
<bean class="org.springframework.security.ldap.populator.DefaultLdapAuthoritiesPopulator">
<constructor-arg index="0"><ref local="initialDirContextFactory"/></constructor-arg>
<constructor-arg index="1"><value></value></constructor-arg>
<property name="groupRoleAttribute"><value>cn</value></property>
<!--property name="groupSearchFilter"><value>(&(uniqueMember={0})(objectclass=groupofuniquenames))</value></property-->
<property name="searchSubtree"><value>true</value></property>
</bean>
</constructor-arg>
</bean>

Теперь можно авторизовываться через ActiveDirectory


Эту статью Вы можете прочитать на новом блоге 

Русские шрифты при генерации PDF в JasperReport

Пришло время создавать отчетность по протекающим бизнес-процессам в Intalio. Для этих целей было принято решение использовать JasperReport. Одно из самых основных наших требований при выборе системы отчетности было: Open Source, SOAP. Набросать отчет не составило труда, но хотелось бы еще его импортировать в PDF. С этим появились трудности, т.к. русских шрифтов в пакете нету.

Покопавшись пару часов разобрался как подключить шрифты и к iReport и к JasperServer.
Требуется настройка как iReport так и JasperServer.

Подключение шрифтов к iReport

1 Копируем нужные нам шрифты например в папку c:\Fonts
2 Включаем папку c:\Fonts в CLASSPATH iReport'а (см. рисунок ниже)

2.1 Выбираем Меню Tools->Options
2.2 Выбираем вкладку CLASSPATH
2.3 Добавляем папку - кнопка Add Folder
3 Теперь надо перейти на вкладку Fonts (см. рисунок ниже)
3.1 Для того чтобы мы могли использовать шрифты из подключенной папки надо поставить галочку напротив c:\Fonts в окне PDF fonts path (Deprecated, Install True Type fonts instead)
4 Вуаля! Теперь можно использовать русские шрифты в iReport (данные шрифты будут доступны для свойства PDF Font name is now deprecated. You should use a Font Extension when using a not standart font. См. рисунок ниже)

Настройка JasperServer для работы с русскими шрифтами
Как ни странно тут все очень просто. Необходимо скопировать шрифты из папки c:\Fonts в [JasperServer folder]/apache-tomcat/webapps/jasperserver/WEB-INF/classes

Для успокоения души можно перезагрузить JasperServer.
Теперь можно использовать русские шрифты.

Ссылки на другие инструкции по подключению шрифтов:
http://mdahlman.wordpress.com/2009/05/13/fonts-in-jasperserver/
http://mdahlman.wordpress.com/2010/04/16/fonts-in-jasperserver-3-7/

Эту статью Вы можете прочитать на новом блоге 

среда, 21 апреля 2010 г.

Использование сервисов и форм на загружаемых пулах.


Так выглядит загружаемый пул с пользовательской формой инициирующей процесс и сервисом, который получает данный от LDAP

Для тех, кто занимался моделирование процессов в Intalio|Designer до выхода 6-ой версии зачастую сталкивались с тем что в определенный момент из за большого количества сообщений от сервисов и форм делали диаграмму сложно читаемой. Начиная с 6-ой версии это неудобство было решено, теперь использовать загружаемый (executable) пул использовать для работы с формами и операциями сервисов. Таким образом можно больше не пользоваться незагружаемыми пулами (ну или почти неиспользовать).

Эту статью Вы можете прочитать на новом блоге 

пятница, 9 апреля 2010 г.

WEB-cервис для DotProject

В свое время мы выбирали систему проджект менеджмента. Остановились на DotProject, т.к. во-первых он OpenSource, а во-вторых он WebBased. Также он хорошо цепляется к LDAP, а это соответственно позволяет его "прицепить" и к Active Directory. Это все лирика, немного подробнее описшу сей продукт в следующий раз, т.к. информации по нему в сети полно.

Самое вкусное, это то - что мы написали WEB-сервис под него, т.к. для нашей интеграции нужна была система проджект менеджмента. Соответственно с его помощью можно фактический управлять DotProject.

Сервис скачать можно отсюда:
- http://github.com/EvgenyPopov/DotProject-SOAP

Официальный сайт: http://dotproject.net/

Эту статью Вы можете прочитать на новом блоге 

среда, 31 марта 2010 г.

У RBACQueryService не работает часть функционала

Начал было радоваться, что Intalio настроил на Microsoft Active Directory как тут появились новые "грабли". Дело в том, что RBACQueryService, который идет вместе с security-ws-service даже после обновления не работает как надо.

Суть проблемы в следующем (авторизация в UI-FW проходит без проблем):

Если нам надо получить аттрибуты пользователя с помощью операции RBACQueryService->GetUserProperties, то мы можем получить доступ непосредственно только к пользователям, которые находятся в security.ldap.user.base=ou=Users, а пользователи допустим находящиеся в ou=Users1,ou=Users видны для операции GetUserProperties уже не будут.



На данный момент ищу решение проблемы, как найду - обязательно выложу.

Эту статью Вы можете прочитать на новом блоге 

понедельник, 29 марта 2010 г.

Галактика вышла в массы

На днях обнаружил, что с недавнего времени ERP "Галактика" стала Open Source, закрытым осталось только ядро. Был очень удивлен, т.к. до недавнего времени данная "коробка" была полностью закрыта и стоила достаточно дорого. В отрытой версии доступно 15 лицензий (контурных или модульных - пока не знаю, покручу - расскажу). Причем доступен оченб богатый набор контуров/модулей. В скором времени выложу более подробную информацию.

Эту статью Вы можете прочитать на новом блоге 

вторник, 23 марта 2010 г.

Настройка Intalio|Server для работы с Microsoft Active Directory

Как и обещал ранее, в данной статье я расскажу как настроить Intalio|Server для работы с Microsoft Active Directory.
Хоть и на официальном сайте Intalio говориться о том, что использование Microsoft AD возможно только в Enterprise версии в это верить особо не стоит. Для настройки нам понадобиться:
1. Внести изменения в ldap.properties
2. Обновить библиотеки security

1. Изменение настроек ldap.properties
Не удивляйтесь, что изменения в данном файле-настроек будут незначительные. Ниже приведен листинг ldap.properties:


#
# Configuration for Microsoft Active Directory
#
#
# The ULR for the LDAP Server
# The default is 'ldap=://localhost:389/'.
#
java.naming.provider.url=ldap://my.active.directory:389/
#
# The user of the LDAP Server connection
# For example: 'cn=Directory Manager'.
#
java.naming.security.principal=cn=Administrator,cn=users,dc=my,dc=active,dc=directory
#
# The credentials or password of the connection
# For example: 'password'.
#
java.naming.security.credentials=password
#
# Authetication method to connect to the LDAP Server
# The default is 'simple'.
#
java.naming.security.authentication=simple
#
# The supported realm(s) for the directory. The properties
# list name of the realm, and the base DN separated by a
# colon (':')
# For example: 'airrus:dc=airrus,dc=com'.
#
security.ldap.realm.0=intalio:dc=my,dc=active,dc=directory
#
# The ldap factory for the directory service
# The default is 'com.sun.jndi.ldap.LdapCtxFactory'.
# (without quotes, same below)
#
java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory
#
# The user's sub-context
# For example: 'ou=People', if people belongs to
# 'ou=People'
#
security.ldap.user.base=ou=Users
#
# The role or group's sub-context
# For example: 'ou=Roles', if roles belongs to
# 'ou=Roles'.
#
security.ldap.role.base=ou=Groups
#
# An LDAP attribute name that identifies an user
# For example: 'uid'.
#Данный аттрибут устанавливаем sAMAccountName, т.к. он является логином, cn нам
#не совсем подходит, т.к. там может содержаться русский язык, который при авторизации
#без "напильника" не принимается
security.ldap.user.id=sAMAccountName
#
# The LDAP attribute name that identifies a role
# For example: 'cn'.
#
security.ldap.role.id=cn
#
# The LDAP attribute name that references a role's ascendants
# If this attribute is specified, leave 'security.ldap.role.descen' out
# For example, if standard Role is used for access control, specify
# 'nsRoleDN' or a corresponding attribute of the particular server,
# and leave out security.ldap.role.descen properties.
#
#security.ldap.role.ascen=nsRoleDN
#
# The LDAP attribute name that references a role's descendants or members.
# If this attribute is specified, leave security.ldap.role.ascen out.
# For example, if Group is used for access control, specify 'member'
# or a corresponding attribute of the particular server, and leave out
# security.ldap.role.ascen
#
#security.ldap.role.descen=member
#
# The LDAP attribute name of an user object that references the user's roles
# For example, 'nsRoleDN'.
#
#security.ldap.user.roles=nsRoleDN
#
# The LDAP attribute name of a role (or group) that references the role's
# users.
# For example, 'uniquemember'.
#В AD роли находятся под аттрибутом member а не uniquemember
security.ldap.role.users=member
#
# The attribute name of an user's calculated effective roles.
# If Role is used, specify 'nsRole' or a corresponding attribute
# of the particular server. For Group with Active Directory,
# specify 'memberOf'. If unsure, leaves it out
#
#security.ldap.user.allroles=nsRole
#
# The permissions' sub-context
# For example, 'ou=Permission'.
#
security.ldap.perm.base=ou=Permission
#
# The LDAP attribute name of a role that references permission objects
# For example: 'permissions'.
#
security.ldap.role.perms=permission
#
# The LDAP attribute of permission object that reference the permission's
# roles or groupsOC
# For example: 'nsRoleDN'.
#
#security.ldap.perm.roles=nsRoleDN
#
# The LDAP attribute of permission object that references the permission's
# protected resources.
# For example: 'resource'.
#
security.ldap.perm.objects=resource
#
# The LDAP attribute name that identifies a permission object
# For example, 'cn'.
#
security.ldap.perm.id=cn
#
# The LDAP attributes names of an user's credentials or passwords
# of the user.
# Format: 'ldap property:alias'
# For example, 'userPassword:password'.
#
security.ldap.user.credential.0=userPassword:password
#security.ldap.user.credential.0=userCert:userCertificate
#
# The LDAP attribute names of an user
# Format: 'ldap property:alias'
#PЗдесь нам надо проинициализировать аттрибут sAMAccountName, для использования его #в качестве логина
security.ldap.user.prop.0=sAMAccountName:sAMAccountName
security.ldap.user.prop.1=displayName:cn
security.ldap.user.prop.2=ou
security.ldap.user.prop.3=objectClass:objectclass
security.ldap.user.prop.4=sn
security.ldap.user.prop.5=givenName:givenname
security.ldap.user.prop.6=mail:email
security.ldap.user.prop.7=cn:uid
security.ldap.user.prop.8=street:streetaddress
security.ldap.user.prop.9=roomNumber:roomnumber
security.ldap.user.prop.10=nsrole:nsrole
security.ldap.user.prop.11=nsroledn:nsroledn
#
# The LDAP atrribute names of a role or group
# Format: 'ldap property:alias'
#
security.ldap.role.prop.0=sn:sn
security.ldap.role.prop.1=ou:ou
security.ldap.role.prop.2=objectClass:objectclass
security.ldap.role.prop.3=member:member

Как видно из примера отличия весьма незначительны. Но настроить только ldap.properties недостаточно, т.к. подуровни (sub ou's) ou (organisational unit) будут недоступны, а это означает, что Вы можете работать только с пользователями, находящимися в ou=Users, также Вы не сможете авторизоваться используя sAMAccountName.

2. Обновление библиотек security
После настройки ldap.properties требуется сделать обновление библиотеки, отвечающие за security, скачать их можно отсюда: http://www.intalio.org/public/maven2/org/intalio/security/.

Список требуемых библиотек (Выбирайте желательно последние версии библиотек, на момент публикации последняя версия - 1.0.12):

Затем следует зайти в http://localhost:8080/axis2 -> Administration и проверить версию security-ws-service-x.x.xx. См. рисунок ниже.
Скорее всего Вы там увидите security-ws-service-1.0.4. Для того, чтобы обновить версию, Вам следует:
1. Удалить из папки [intalio_server]/webapps/axis2/WEB-INF/services файл security-ws-service-1.0.12.aar.
2. Загрузить новую версию сервиса, как показано на следующем рисунке:
3. Нужно обновить библиотеки security в UI-FW
Для обновления библиотек необходимо скопировать ранее скачанные файлы:
- security-api-1.0.12.jar
- security-web-nutsNbolts-1.0.12.jar
- security-ws-client-1.0.12.jar
- security-ws-common-1.0.12.jar
в папку [intalio_server]\webapps\ui-fw\WEB-INF\lib, затем старые версии библиотек требуется удалить.

4. Нужно обновить библиотеки security в BPMS-CONSOLE
Для обновления библиотек необходимо скопировать ранее скачанные файлы:
- security-api-1.0.12.jar
- security-web-nutsNbolts-1.0.12.jar
- security-ws-client-1.0.12.jar
- security-ws-common-1.0.12.jar
в папку [intalio_server]\webapps\bpms-console\WEB-INF\lib, затем старые версии библиотек требуется удалить.


5. Нужно обновить библиотеки security в GI
Для обновления библиотек необходимо скопировать ранее скачанные файлы:
- security-web-nutsNbolts-1.0.12.jar
в папку [intalio_server]\webapps\gi\WEB-INF\lib, затем старые версии библиотек требуется удалить.

5. Нужно обновить библиотеки security в WDS
Для обновления библиотек необходимо скопировать ранее скачанные файлы:
- security-api-1.0.12.jar
- security-web-nutsNbolts-1.0.12.jar
- security-ws-client-1.0.12.jar
- security-ws-common-1.0.12.jar
в папку [intalio_server]\webapps\wds\WEB-INF\lib, затем старые версии библиотек требуется удалить.

Теперь перезагружаем Intalio|Server и можем использовать Microsoft Active Directory.

Эту статью Вы можете прочитать на новом блоге 

понедельник, 22 марта 2010 г.

Аутентификация в Intalio через Microsoft Active Directory

Спустя 3 дня получилось таки настроить Intalio на работу с Active Directory. Не подумал бы даже с какими граблями встречусь - дело в том что оказалось все более-менее просто. Завтра с утречка выложу инфу как все это безобразие настроить :)

Эту статью Вы можете прочитать на новом блоге 

пятница, 19 марта 2010 г.

Intalio CE и Microsoft Active Directory

Авторизация в Intalio с помощью Microsoft Active Directory возможна!!!
На днях решил проверить совместную работу Intalio CE с Microsoft Active Directory, и как же я был удивлен, когда вторизация прошла!!! А удивление было обосновано тем, что на форуме www.intalio.com мне сообщили однажды, что Microsoft AD поддерживается только в Entrprise версии. Однако решил попробовать именно потому что, в Microsoft AD также используется LDAP, а если протокол один и тот же - то почему он должен работать только в ЕЕ версии?

Сразу напоролся на грабли:
В Apache LDAP у меня была OU=Users и OU=Roles, соответственно параметры в ldap.properties были следующими:
security.ldap.user.base=OU=User
security.ldap.role.base=OU=Roles
В Microsoft AD у нас существует достатно большое количество разных OU (Organizational Units) для пользователей. Так вот проблема заключается в следующем, что пока не нашел способа: либо поиска пользователей (что то типа SearcUserDN); либо надо понять как хотя бы перечислить существующие OU.

Эту статью Вы можете прочитать на новом блоге 

среда, 10 февраля 2010 г.

Рекомендации

По-большому счету все перечисленные рекомендации имеют смысл для достаточно объемных процессов. Следовательно для процессов, которые могут разместиться на одном экране не обязательна градация по цветам, но я бы на Вашем месте взял бы правило распределение объектов по-различным папкам.

1. Папки
Старайтесь в проекте создавать отдельный папки различных объектов, например:
Diagrams - для диаграмм
Shemas - для схем данных
SQL - для SQL запросов
Forms - для форм
Services - для сервисов
и т.д.

Поверьте, в один прекрасный момент, когда ваша диаграмма станет достаточно объемной, а Вы не использовали папки поиск нужного объекта станет затруднителен.

2. Цветовая градация задач
На диаграмме старайтесь выделять цветом однотипные задачи. Т.е. например: задачи связанны с SQL-запросами выделяем зеленым цветом, задачи форм - синим и т.д.

Эту статью Вы можете прочитать на новом блоге 

вторник, 9 февраля 2010 г.

Шаг 1. Простой сервис

Для начала рассмотрим самый простой пример процесса. В нем не будет форм, а вызываться он будет из bpms-console, т.е. фактически это будет сервис. Данный пример будет рассмотрен очень подробно, дабы не повторяться во всех последующих.

Для использования примера, приложенного к данной статье Вам потребуется: Intalio|Server, Intalio|Designer и желательно установить MySQL Server и Apache LDAP. Как все это устанавливается описано у меня в блоге. В дальнейшем нам будет гораздо удобнее использовать все это вместе. Также если появятся вопросы, то я всегда буду рад ответить (если конечно же смогу :))

1. Создаем новый проект:
File->New->Intalio|Designer Busines Process Project2. Заполнение параметров процесса:
Project Name - Имя проекта
Server URL - http://localhost:8080/ode - если сервер установлен на локальной машине
http://serverName:8080/ode - если в качестве хоста используется отдыльный сервер

3. Создаем диаграмму
После того, как создан новый проект, требуется создать диаграмму, на которой будем "рисовать" наш процесс.
Правая клавиша мыши на папке в нашем проекте, куда хотим поместить нашу диаграмму, затем New->Busines Process Diagramm.
4. Рисуем процесс.
В результате у нас появится Диаграмма с одной задачей. На данной диаграмме и будем рисовать наш первый процесс.
После создания диаграммы у нас есть: один пул, в котором содержится одна задача. Этого недостаточно, т.к. данный процесс не имеет ни одного старта.

Запуск процесса требуется осуществить из другого пула, причем он должен быть неисполняемым. На следующем рисунке показано как создать пул (для того чтобы появилось меню, в котором создаем новый пул требуется щелкнуть мышкой по пустому месту на диаграмме и подождать секунду).
На рисунке красным кругом на диаграмме выделен пункт меню, который отвечает за создлание нового пула.

Слева от диаграммы расположена панель с вкладками "Process Explorer" и "Pallete". На вкладке "Palette" расположены все элементы нотации BPMN, каждый элемент несет свою функциональную нагрузку, об этом в следующих примерах.

Итак, новый пул создан, и переименован в "Service". Теперь нам нужно этот пул сделать неимполняемым. На следующей картике показано как это сделать. Для того чтобы появилось меню, требуется щелкнуть правой клавишей мыши на пуле.
В красном овале находтся собственно наша опция, которая сделает пул неисполняемым. после того как наш пул станет неисполняемым - прямоугольник, содержащий название пула станет темным.

Теперь добавим на неисполняемый пул Задачу. Сделать это можно перетащив с панели Palette объект Task на наш пул.

Эту статью Вы можете прочитать на новом блоге

понедельник, 8 февраля 2010 г.

Intalio: Шаг за шагом. Введение.

Как ранее упоминалось в анонсе блога ИТ блокнот /Николай Войнов/ начинаю писать цикл статей "Intalio: Шаг за Шагом". Думаю, что это будет достаточно полезно для практиков, а также для тех, кто еще в поиске системы автоматизации базнес-процессов.

В данных статьях будут рассматриваться примеры процессов. Также буду выложены сами процессы, которые Вы сможете запустить у себя локально. К процессам будет полное описание форм, маппинга. Также будут рассмотрены: использование сервиса LDAP, работа с MySQL, Интеграция с другими системами.

Для того, чтобы можно было использовать примеры выложенные у меня в блоге должны быть установлены:

  • Intalio|Server
  • Intalio|Designer
Желательно также установить:
  • Apache Directory (LDAP)
  • Mysql Server
Если не установить последние 2 пункта, то авторизация будет браться из XML-ника по-умолчанию, а в качестве СУБД будет использоваться Derby.
Ну что же - начало положено, теперь ждем в свет сами статьи.


Эту статью Вы можете прочитать на новом блоге