jbpm与ssh完整示例Word格式文档下载.docx
- 文档编号:18365108
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:36
- 大小:27.94KB
jbpm与ssh完整示例Word格式文档下载.docx
《jbpm与ssh完整示例Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《jbpm与ssh完整示例Word格式文档下载.docx(36页珍藏版)》请在冰豆网上搜索。
这样会产生三个文件:
gpd.xml、processdefinition.xml、processimage.jpg。
processdefinition.xml为描述流程定义文件,本例为:
<
?
xmlversion="
1.0"
encoding="
UTF-8"
>
process-definitionname="
文档测试流程"
<
start-statename="
开始"
transitionname="
提交张三审批"
to="
张三审批"
/transition>
/start-state>
task-nodename="
taskname="
审批1"
<
assignmentactor-id="
张三"
/>
/task>
提交李四审批"
李四审批"
/task-node>
审批2"
李四"
提交王五审批"
王五审批"
审批3"
王五"
结束流程"
结束"
end-statename="
/end-state>
/process-definition>
processimage.jpg文件是定义流程产生的图片、gpd.xml文件是图形文件的座标说明。
用于在b/s下显示流程流转的图片位置。
本例中的gpd.xml文件
process-diagramname="
width="
801"
height="
477"
nodename="
x="
308"
y="
4"
140"
40"
labelx="
5"
-10"
/node>
310"
90"
313"
192"
307"
401"
/process-diagram>
流程的发布
流程的发布常用的有二种方式:
直接发布processdefinition.xml定义的xml文件,在以前的文章描述中使用的方式。
建议使用第二种方式,gpd.xml、processdefinition.xml、processimage.jpg压缩成zip文件上传。
注rar不可以,java当中不支持这种商业化的压缩文件。
代码如下:
1deployjbpm.jsp下选择zip压缩文件上传
%@pagecontentType="
text/html;
charset=UTF-8"
%>
%@includefile="
/commons/taglibs.jsp"
html>
head>
/head>
body>
formaction="
${ctx}/jbpmdeploy.do?
method=deploy"
enctype="
multipart/form-data"
method="
post"
/>
选择zip类型流程上传:
inputtype="
file"
name="
br/>
submit"
/form>
/body>
/html>
2struts中的action文件
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importmons.logging.Log;
importmons.logging.LogFactory;
importorg.apache.struts.action.ActionForm;
importorg.apache.struts.action.ActionForward;
importorg.apache.struts.action.ActionMapping;
importmons.core.web.StrutsAction;
importcom.shane.security.service.UploadProcessManager;
publicclassJbpmActionextendsStrutsAction{
privatestaticLoglog=LogFactory.getLog(JbpmAction.class);
privateUploadProcessManageruploadProcessManager;
publicvoidsetUploadProcessManager(UploadProcessManageruploadProcessManager){
this.uploadProcessManager=uploadProcessManager;
}
/**
*上传流程文件
*@parammapping
*@paramform
*@paramrequest
*@paramresponse
*@return
*/
publicActionForwarddeploy(ActionMappingmapping,ActionFormform,
HttpServletRequestrequest,HttpServletResponseresponse)throwsException{
log.info("
执行流程部署!
"
);
log.info(uploadProcessManager.handleRequest(request));
returnmapping.findForward("
delpoyindex"
}
3Service类,使用时要修改自已的hibernate的封装。
代码中使用spring的设置式注入方式。
相关文件可以自行编写。
本方式是根据jbpm自带的示例改写。
3.1接口定义
importjava.io.IOException;
publicinterfaceUploadProcessManager{
publicvoidprintInput(HttpServletRequestrequest)throwsIOException;
publicStringhandleRequest(HttpServletRequestrequest);
3.2实现类
importjava.io.InputStream;
importjava.util.Iterator;
importjava.util.List;
importjava.util.zip.ZipInputStream;
importmons.fileupload.DiskFileUpload;
importmons.fileupload.FileItem;
importmons.fileupload.FileUpload;
importmons.fileupload.FileUploadException;
importorg.jbpm.JbpmConfiguration;
importorg.jbpm.JbpmContext;
importorg.jbpm.graph.def.ProcessDefinition;
importmons.core.dao.HibernateEntityDao;
publicclassUploadProcessManagerImplextendsHibernateEntityDaoimplementsUploadProcessManager{
privateJbpmConfigurationjbpmConfiguration;
publicvoidprintInput(HttpServletRequestrequest)throwsIOException{
InputStreaminputStream=request.getInputStream();
StringBufferbuffer=newStringBuffer();
intread;
while((read=inputStream.read())!
=-1){
buffer.append((char)read);
}
publicStringhandleRequest(HttpServletRequestrequest){
if(!
FileUpload.isMultipartContent(request)){
return"
Notamultipartrequest"
;
try{
DiskFileUploadfileUpload=newDiskFileUpload();
Listlist=fileUpload.parseRequest(request);
Iteratoriterator=list.iterator();
if(!
iterator.hasNext()){
return"
Noprocessfileintherequest"
FileItemfileItem=(FileItem)iterator.next();
if(fileItem.getContentType().indexOf("
application/x-zip-compressed"
)==-1){
Notaprocessarchive"
returndoDeployment(fileItem);
}catch(FileUploadExceptione){
e.printStackTrace();
FileUploadException"
}
publicStringdoDeployment(FileItemfileItem){
ZipInputStreamzipInputStream=newZipInputStream(fileItem.getInputStream());
JbpmContextjbpmContext=JbpmContext.getCurrentJbpmContext();
if(jbpmContext==null){
jbpmContext=this.getJbpmContext();
ProcessDefinitionprocessDefinition=ProcessDefinition.parseParZipInputStream(zipInputStream);
jbpmContext.deployProcessDefinition(processDefinition);
zipInputStream.close();
Deployedarchive"
+processDefinition.getName()+"
successfully"
}catch(IOExceptione){
IOException"
}
privateJbpmContextgetJbpmContext(){
JbpmContextcontext=jbpmConfiguration.getInstance().createJbpmContext();
context.setSession(this.getSession());
returncontext;
publicvoidsetJbpmConfiguration(JbpmConfigurationjbpmConfiguration){
this.jbpmConfiguration=jbpmConfiguration;
流程实例的启动
1编写测试的主体页面index_demo.jsp。
index_demo.jsp代码如下:
title>
MyJSP'
index_demo.jsp'
startingpage<
/title>
ahref="
${ctx}/workflow/deployjbpm.jsp"
流程部署<
/a>
br>
${ctx}/jbpmdemo.do?
method=createDoc"
创建公文<
method=bingDoc"
将公文与流程绑定(即需要创建流程实例)<
method=submitDoc"
公文创建者提交公文<
method=getNode"
当前所处的节点<
method=getTask"
某用户的是否有公文等待其审批<
method=goNext"
查找到当前的任务对应的公文之后,即可对其审批,并继续流转<
method=isFinish"
到达终点<
${ctx}/workflow.do?
method=viewImage&
id=246"
target="
_blank"
查看<
2对应的action文件
/*******************************************************************************
*文件名:
JbpmDemo.java<
*版本:
*描述:
*版权所有:
*////////////////////////////////////////////////////////<
*创建者:
沙振中<
*创建日期:
Jan9,2009<
*修改者:
*修改日期:
*修改说明:
******************************************************************************/
packagecom.shane.security.web;
importcom.shane.security.service.WorkflowDemoManager;
publicclassJbpmDemoActionextendsStrutsAction{
privatestaticLoglog=LogFactory.getLog(JbpmDemoAction.class);
privateWorkflowDemoManagerworkflowDemoManager;
publicvoidsetWorkflowDemoManager(WorkflowDemoManagerworkflowDemoManager){
this.workflowDemoManager=workflowDemoManager;
publicActionForwardcreateDoc(ActionMappingmapping,ActionFormform,
workflowDemoManager.createDoc();
succeed"
publicActionForwardbingDoc(ActionMappingmapping,ActionFormform,
workflowDemoManager.bingDoc();
publicActionForwardsubmitDoc(ActionMappingmapping,ActionFormform,
workflowDemoManager.submitDoc();
publicActionForwardgetNode(ActionMappingmapping,ActionFormform,
workflowDemoManager.getNode();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- jbpm ssh 完整 示例