BOS(Bonita Open Solution) 是一个开源的 BPM 解决方案,有 3 个主要部分构成:
- Bonita Studio : 用户可以根据 BPMN 标准以图标的形式来设计和修改业务流程。同时也可以连接其已有的 信息系统 ( 例如 , ERP , 企业内容管理 ECM, 数据库 ...) 来实现商业流程的自动化运用,该流程将以网络表格的形式呈现于终端用户来管理流程。博尔尼塔工作室使终端用户能够使用其他技术例如 XPDL 和 jBPM 开始流程工作 . 该技术基于 Eclipse 软件 .
- Bonita Execution Engine : 该引擎是由 Java ( 程序语言 ) API 编写,能够允许用户介入编写流程, 是一个基于 LGPL 执照和 Hibernate 的软件。
- Bonita User Experience :终端用户使用该门户可以像管理邮件一样管理已设置的任务,该门户也允许任务执行者来管理并且报告流程,它是基于 GWT .
本文主要介绍如何使用 Bonita Execution Engine 来开发自己的 BPM 程序。
1. 获得 Bonita Execution Engine
首先下载 Bonita Open Solution Studio(http://www.bonitasoft.com/products/BPM_downloads)-- > 安装并运行 --> 点击左上角 ”Process” 菜单 --> 选择 ”Advanced Export”--> 经过 2 个 next ,只勾上 ”Export Runtime” 选项 —> 点击 Export.( 如下图所示 )
2. 在 Eclipse 中创建一个 maven 项目,并添加上 bonita engine 的依赖。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.bonitasoft.example</groupId> <artifactId>runtime</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>runtime</name> <dependencies> <dependency> <groupId>org.ow2.bonita</groupId> <artifactId>bonita-client</artifactId> <version>5.5.1</version> </dependency> <dependency> <groupId>org.ow2.bonita</groupId> <artifactId>bonita-server</artifactId> <version>5.5.1</version> </dependency> ..... </dependencies> </project>
3. 设置 BONITA_HOME 和 JAAS
BONITA_HOME 是一个名为 "bonita" 的文件夹 , 它包含 "client", "external" 和 "server" 这 3 个子文件夹,位于 Bonita runtime 根目录下 .
// Initialize BONITA_HOME final String bonitaHome = System.getProperty(WebBonitaConstants.BONITA_HOME); if (bonitaHome == null) { System.setProperty(WebBonitaConstants.BONITA_HOME, "C:\runtime\bonita");// BONITA_HOME Path } String defaultLoginFile = bonitaHome + "/external/security/jaas-standard.cfg"; System.setProperty(org.ow2.bonita.util.BonitaConstants.JAAS_PROPERTY, defaultLoginFile);
4. 每次调用engineAPI 中的时候,必须先用“BonitaAuth-default” Context 登录,否则无法使用engineAPI 。
private static final String LOGIN = "admin"; private static final String PASSWORD = "bpm"; //login final LoginContext loginContext = new LoginContext("BonitaAuth-defalut", new SimpleCallbackHandler(LOGIN, PASSWORD)); loginContext.login(); try{ final List<org.ow2.bonita.facade.identity.User> theUsers = AccessorUtil.getIdentityAPI().getUsers(0, 20); } catch(Exception e) { e.printStackTrace(); } finally { loginContext.logout(); }
对于 Bonita 中一些 BPM 术语的解释,请参照 bonitasoft-custom-application-development.pdf ( http://www.bonitasoft.com/resources/documentation-library )。
完整的例子请下载附件。