java开源项目使用Java开源工作流jBPM开发一个简单的Word文件下载.docx
- 文档编号:1137069
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:60
- 大小:89.78KB
java开源项目使用Java开源工作流jBPM开发一个简单的Word文件下载.docx
《java开源项目使用Java开源工作流jBPM开发一个简单的Word文件下载.docx》由会员分享,可在线阅读,更多相关《java开源项目使用Java开源工作流jBPM开发一个简单的Word文件下载.docx(60页珍藏版)》请在冰点文库上搜索。
approve_uservarchar(50),--审批人
approve_timetimestamp,--审批时间
is_passedsmallint,--是否同意,1同意,2驳回
approve_remarkvarchar(500),--审批备注,如驳回的原因
back_timetimestamp--销假时间
);
4、配置JOTM事务支持。
把carol.properties、jta.jar、commons-logging.jar、carol.jar、connector-1_5.jar、jotm.jar、jotm_jrmp_stubs.jar、jts1_0.jar、mysql-connector-java-3.1.11-bin.jar、objectweb-datasource.jar、xapool.jar放到%tomcat_home%/lib下面。
把howl.jar、jotm.jar、objectweb-datasource.jar、ow_carol.jar、xapool.jar放到WEB-INF/lib下面。
在jBPLDemo的context配置数据源,代码如下:
<
?
xmlversion='
1.0'
encoding='
utf-8'
>
ContextdisplayName="
jBPMDemo"
docBase="
${catalina.base}/webapps/jBPMDemo"
path="
/jBPMDemo"
workDir="
work/Catalina/localhost/jBPMDemo"
reloadable="
true"
Resourcename="
UserTransaction"
auth="
Container"
type="
javax.transaction.UserTransaction"
factory="
org.objectweb.jotm.UserTransactionFactory"
jotm.timeout="
180"
/>
JbpmDS"
type="
javax.sql.DataSource"
org.objectweb.jndi.DataSourceFactory"
maxWait="
5000"
maxActive="
300"
maxIdle="
2"
username="
root"
password="
"
driverClassName="
com.mysql.jdbc.Driver"
url="
jdbc:
mysql:
//127.0.0.1:
3306/jbpmdb"
/>
/Context>
xmlversion="
1.0"
encoding="
UTF-8"
jbpm-configuration>
importresource="
jbpm.default.cfg.xml"
jbpm.tx.hibernate.cfg.xml"
jbpm.jpdl.cfg.xml"
jbpm.identity.cfg.xml"
jbpm.businesscalendar.cfg.xml"
jbpm.jobexecutor.cfg.xml"
/jbpm-configuration>
utf-8"
!
DOCTYPEhibernate-configurationPUBLIC
"
-//Hibernate/HibernateConfigurationDTD3.0//EN"
uration-3.0.dtd"
hibernate-configuration>
session-factory>
propertyname="
hibernate.dialect"
org.hibernate.dialect.MySQLInnoDBDialect<
/property>
hibernate.connection.datasource"
java:
comp/env/JbpmDS<
hibernate.transaction.factory_class"
org.hibernate.transaction.JTATransactionFactory<
hibernate.transaction.manager_lookup_class"
org.hibernate.transaction.JOTMTransactionManagerLookup<
jta.UserTransaction"
comp/env/UserTransaction<
mappingresource="
jbpm.repository.hbm.xml"
jbpm.execution.hbm.xml"
jbpm.history.hbm.xml"
jbpm.task.hbm.xml"
jbpm.identity.hbm.xml"
/session-factory>
/hibernate-configuration>
5、在Eclipse中GPD定义流程。
GPD对中文的支持还有问题,要用图形界面与直接编写代码相结合的方式,最后效果如下图:
processkey="
askForLeave"
name="
请假流程"
version="
1"
xmlns="
http:
//jbpm.org/4.0/jpdl"
swimlanecandidate-groups="
manager"
/>
startg="
188,10,48,48"
start1"
transitiong="
-30,-10"
开始"
to="
填写请假申请"
/start>
taskassignee="
#{owner}"
g="
167,86,92,52"
-50,-11"
提交审批"
审批"
/task>
taskg="
169,159,92,52"
swimlane="
-76,-8"
判断审批结果"
exclusive1"
91,298,92,52"
销假"
休假结束"
end1"
252,295,92,52"
查看原因"
-34,-10"
请假结束"
end2"
endg="
116,377,48,48"
275,372,48,48"
decisiong="
190,227,48,48"
0,-15"
拒绝"
conditionexpr="
#{is_passed==false}"
/transition>
-31,-16"
通过"
/decision>
/process>
产生的图片askForLeave.png放到应用的askForLeave文件夹下面。
6、建立几个java类。
demo.jbpm.DBUtil:
packagedemo.jbpm;
importjava.sql.Connection;
importjavax.naming.InitialContext;
importjavax.sql.DataSource;
importjavax.transaction.UserTransaction;
publicclassDBUtil{
privatestaticDataSourceds;
/**
*获取数据源
*@return
*@throwsException
*/
publicstaticDataSourcegetDS()throwsException{
if(ds==null)ds=(DataSource)newInitialContext().lookup("
comp/env/JbpmDS"
);
returnds;
}
*获取数据库连接
publicstaticConnectiongetConn()throwsException{
returngetDS().getConnection();
*获取事务UserTransaction
publicstaticUserTransactiongetUserTransaction()throwsException{
UserTransactionut=(UserTransaction)newInitialContext().lookup("
comp/env/UserTransaction"
returnut;
importorg.jbpm.api.Configuration;
importorg.jbpm.api.ExecutionService;
importorg.jbpm.api.IdentityService;
importorg.jbpm.api.ProcessEngine;
importorg.jbpm.api.RepositoryService;
importorg.jbpm.api.TaskService;
publicclassJBPMUtil{
privatestaticProcessEnginepe;
privatestaticRepositoryServicerepositoryService;
privatestaticExecutionServiceexecutionService;
privatestaticIdentityServiceidentityService;
privatestaticTaskServicetaskService;
publicstaticvoiddeploy(StringjdplPath){
StringdeployId=getRepositoryService().createDeployment().addResourceFromClasspath(jdplPath).deploy();
System.out.println("
----------deployid:
+deployId);
publicstaticProcessEnginegetProcessEngine(){
if(pe==null){
Configurationconfig=newConfiguration();
pe=config.buildProcessEngine();
returnpe;
publicstaticRepositoryServicegetRepositoryService(){
if(repositoryService==null)repositoryService=getProcessEngine().getRepositoryService();
returnrepositoryService;
publicstaticExecutionServicegetExecutionService(){
if(executionService==null)executionService=getProcessEngine().getExecutionService();
returnexecutionService;
publicstaticIdentityServicegetIdentityService(){
if(identityService==null)identityService=getProcessEngine().getIdentityService();
returnidentityService;
publicstaticTaskServicegetTaskService(){
if(taskService==null)taskService=getProcessEngine().getTaskService();
returntaskService;
importjava.sql.ResultSet;
importjava.sql.Statement;
importjava.util.ArrayList;
importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;
importjava.util.Set;
importjavax.servlet.http.HttpServletRequest;
importjavax.transaction.Status;
importorg.jbpm.api.ProcessDefinition;
importorg.jbpm.api.ProcessInstance;
importorg.jbpm.api.model.ActivityCoordinates;
importorg.jbpm.api.task.Task;
publicclassAskForLeave{
privatefinalstaticStringemployeeName="
王三"
;
privatefinalstaticStringmanagerName="
李五"
publicstaticvoiddeploy(){
JBPMUtil.deploy("
jpdl/askForLeave.jpdl.xml"
JBPMUtil.getIdentityService().createUser(employeeName,"
王"
"
三"
JBPMUtil.getIdentityService().createUser(managerName,"
李"
五"
JBPMUtil.getIdentityService().createGroup("
manager"
JBPMUtil.getIdentityService().createMembership(managerName,"
*请假申请
*@paramrequest
publicstaticvoidapply(HttpServletRequestrequest)throwsException{
UserTransactionut=DBUtil.getUserTransaction();
Connectionconn=DBUtil.getConn();
booleanrollback=false;
try{
ut.begin();
//*********业务部分
//请假申请存入数据库
Statementstmt=conn.createStatement();
Stringsql="
insertintoask_for_leave(apply_user,"
+
begin_leave_time,end_leave_time,leave_reason)values("
'
+request.getParameter("
apply_user"
)+"
"
+request
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 项目 使用 工作流 jBPM 开发 一个 简单