Activiti在线设计-如何在-Activiti6.0中设计和关联表单?
网页链接
,
Activiti6和activiti5以同样的方式集成。
1.为什么要整合?
activiti 5.10版将原来独立的ActivitiModeler模块集成到ActivitiExplorer中,使用方便。Modeler设计的流程模型可以直接部署到引擎,也可以将部署的流程转换成模型在Modeler中进行编辑。
实际应用中也有这样的需求。将Modeler集成到业务系统中,可以供管理员使用,也可以作为BPM平台的一部分存在。遗憾的是,政府并没有给出如何集成Modeler的文档。
2.整合工作
2.1下载源代码
首先,您需要从Github下载源代码:
2.2复制文件
所有复制的文件都在activiti-webapp-explorer2目录中。
在src/main/resources中,指向项目源代码的源根目录,确保它在编译后位于类的根目录中。
将src/main/webapp中的api、编辑器、资源管理器和libs放到项目的webapp目录下(与WEB-INF目录同级)。
2.3添加依赖关系
123456789101112131415161718192021222324
& lt依赖性& gt_ _ & ltgroupid & gt& lt/groupid & gt;_ _ & ltartifactid & gt活动浏览器& lt/artifact id & gt;_ _ & lt版本& gt5.14 & lt;/version & gt;_ _ & lt排除事项& gt_ _ _ _ & lt排除& gt_ _ _ _ _ _ & ltartifactid & gtvaadin & lt/artifact id & gt;_ _ _ _ _ _ & ltgroupid & gt& lt/groupid & gt;_ _ _ _ & lt/exclusion & gt;_ _ _ _ & lt排除& gt_ _ _ _ _ _ & ltartifactid & gtdcharts-widget & lt;/artifact id & gt;_ _ _ _ _ _ & ltgroupid & gt& lt/groupid & gt;_ _ _ _ & lt/exclusion & gt;_ _ _ _ & lt排除& gt_ _ _ _ _ _ & ltartifactid & gt活动-简单-工作流& lt/artifact id & gt;_ _ _ _ _ _ & ltgroupid & gt& lt/groupid & gt;_ _ _ _ & lt/exclusion & gt;_ _ & lt/exclusions>。& lt/dependency & gt;& lt依赖性& gt_ _ & ltgroupid & gt& lt/groupid & gt;_ _ & ltartifactid & gtactiviti-modeler/artifact id & gt;_ _ & lt版本& gt5.14 & lt;/version & gt;& lt/dependency & gt;
2.4添加Java类
添加一个类并保存到项目中,注册一些休息路线。
1234567891011121314151617181920212223242526272829
包装;
进口;进口;进口;进口;进口;进口;
public classexplorerrestapplicationextendsgactivitirestaapplication {
publicflorerrestapplication(){ _ _ super();_ } _/* * _ * createsarootrestletthatwillreceiveallcomingcalls。_ */_ @ Override _ publicsynchronizedRestletcreateInboundRoot(){ _ _ router router = new router(get context());__();__(路由器);__(路由器);_ _ jsonpfilter jsonpfilter = newJsonpFilter(get context());__(路由器);_ _ returnjsonpFilter_}
}
2.5配置
将以下配置添加到文件中:
12345678910111213141516
& lt!- Restletadapter,usedtoexposemodelerfunctionalitythroughREST-& gt;& ltservlet & gt_ _ & ltservlet-name & gt;RestletServlet & lt/servlet-name & gt;_ _ & ltservlet-class & gt;& lt/servlet-class & gt;_ _ & ltinit-param >_ _ _ _ & lt!-application class name-& gt;_ _ _ _ & ltparam-name & gt;& lt/param-name & gt;_ _ _ _ & lt参数值& gt& lt/param-value & gt;_ _ & lt/init-param & gt;& lt/servlet & gt;
& lt!-Catchallservicerequests-& gt;& ltservlet映射& gt_ _ & ltservlet-name & gt;RestletServlet & lt/servlet-name & gt;_ _ & lturl模式& gt/service/* & lt;/URL-pattern & gt;& lt/servlet-mapping & gt;
2.6控制器
用SpringMVC做一个简单的包,其他MVC实现也可以。
1234567891011121314151617181920212223242526272829303132333435363738 3940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959 6979899100101102103104105106107108109110111165438 +021131141151161171181191201211221236 5438+02412512612712812913013113213313413513613713813965 438+04014114214314414514614714814915015115215315465438+ 055156157158159160161162163
包装;
进口;进口;
进口;进口;
进口;进口;进口;进口;进口;进口;进口;进口;进口;进口;进口;进口;进口;进口;进口;进口;进口;进口;进口;进口;进口;
/* * *流程模型控制器* * @ author Henry Yan */@ Controller @ request mapping(value = "/workflow/Model ")PubliclyClassModelController {
protectedLoggerlogger =(get class());
@ auto wired _ RepositoryServicerepositoryService;
/* * _ * model list _ */_ @ request mapping(value = " list ")_ publicmodeadviewmodelist(){ _ _ modeland view MAV = newmodelandview(" workflow/model-list ");_ _ List & lt模型& gtlist=()。list();__(“列表”,list);_ _ returnmav_}
/* * _ * Create model _ */_ @ request mapping(value = " Create ")_ public void Create(@ request param(" name ")string name,@ requestparam ("key") stringkey,@ request param(" description ")string description,_ _ _ _ _ HttpServletRequestrequest,http servlet response response){ _ _ try { _ _ _ ObjectMapperobjectMapper = new object mapper();_ _ _ ObjectNodeeditorNode =();_ _ _(“id”、“画布”);_ _ _(“resourceId”、“canvas”);_ _ _ objectnodesteclistnode =();___(“名称空间”,“#”);_ _ _ _ _ _(“stencils et”,stencils etnode);_ _ _ model model data =();
objectnodemodeobjectnode =();_ _ _(_姓名、名称);___(_REVISION,1);_ _ _描述=(描述);_ _ _(_描述、说明);___(());___(姓名);___((重点));
(model data);___((),().getBytes(" utf-8 "));
(()+"/service/editor?id = "+());_ _ } catch(exception one){ _ _ _ _ _ _(“未能创建模型:“,e”);__}_}
/* * _ *根据模型部署流程_ */_ @ request mapping(value = " Deploy/{ ModelID } ")_ Public String Deploy(@ path variable(" ModelID ")String ModelID,redirect attributes){ _ _ Try { _ _ Model data =(ModelID)_ _ ObjectNodemodelNode =(object node)new object mapper()。readTree((()));_ _ _ byte[]bpmn bytes = null;
BpmnModelmodel = newBpmnJsonConverter()。converttobpmnmmodel(modelNode);_ _ _ bpmn bytes = newpmnxml converter()。convertToXML(模型);
StringprocessName=()+"。;___Deploymentdeployment=()。名称(())。addString(processName,newString(bpmnBytes))。deploy();_ _ _ _ _ _(“消息”,“部署成功,部署ID = "+()));_ _} catch (exception e) {_ _(“根据模型部署过程失败:modelId={}”,modelId,e);_ _ } _ _ return " redirect:/workflow/model/list ";_}
/* * _ *导出model _ */_ @ RequestMapping的xml文件(value = " Export/{ modelid } ")_ publicvidexport(@ path variable(" modelid ")string modelid,http servlet response){ _ model data =(modelid)。_ _ _ BpmnJsonConverterjsonConverter = newBpmnJsonConverter();_ _ _ JsonNodeeditorNode = new object mapper()。readTree((()));_ _ _ BpmnModelbpmnModel =(editor node);_ _ _ bpmnxmlconverterexmlconverter = newpmnxmlconverter();_ _ _ byte[]bpmn bytes =(bpmn model);
bytearrayiputstream in = newbytearrayiputstream(bpmn bytes);___(在,());___Stringfilename=()。getId()+" ";___(“内容-处分”,“附件;文件名= "+文件名);___();_ _} catch (exception e) {_ _(“无法导出模型的xml文件:modelId={}”,modelId,e);__}_}
} & lt/pre & gt;
###2.7预防措施
如果使用的是Spring代理引擎,同时项目中有文件(无论是main/resources目录还是test/resources目录),在引擎内部添加以下配置参数,否则打开Modeler的编辑器页面时,读取的数据会返回**204**状态码。
& ltpreclass="brush:xml " >& ltproperty name = " process engine name " value = " test " & gt;& lt/property & gt;& lt/pre & gt;
引擎的默认名称是default。()查询时先检索main/resources,再检索test/resources的sum文件。因此,当main/resources未能监控到指定文件时,引擎将被视为web应用程序的引擎对象,这将导致两个引擎,因此引擎的名称将更改为非默认的“默认”。
##3.中文乱码问题的解决方案
向JVM参数添加参数:
& gt-=UTF-8-=UTF-8
* *参考* *:[activiti modeler中设计的流程包含奇数汉字时无法部署问题](
##4.效果截图
ActivitiModeler已经集成在最新版本的kft-activiti-demo (1.7.0)中,可以在线访问或者下载学习如何配置。
登录[
!【kft-activiti-demo中的效果截图】(/files/2013/03/)![kft-activiti-demo中的效果截图](/files/2013/03/)& lt;/model & gt;
如何在Activiti6.0中设计和关联表单?添加一个链接用户任务,然后马上可以添加一个表单,还有脚本、样式、WebAPI删除用户任务后,可以不去管它。为了照顾旧版本的过程定义,需要保留相应的表单,并且不能删除。修改了链接的用户任务,比如在链接A中增加了两个字段,在链接b中减少了两个字段,这时候就需要重新为两个链接A和b创建表单、脚本、样式和WebAPI,因为表单变了,业务变了,SQL(表)也变了。
《Activiti实战》epub下载在线阅读全文,请百度网盘云资源《Activiti实战》(颜)电子书网盘下载免费在线阅读。
链接:
提取代码:xdni
标题:Activiti实战
豆瓣评分:7.2
作者:颜
出版社:_ Daodangai
出版年份:2015-1-1
页数:508
内容介绍:
Activiti实战以实践为基础,不仅让读者知道它是什么,而且全面掌握Activiti的架构、功能、用法、技巧和最佳实践,具有足够的广度;而且,让读者知道为什么,深入了解Activiti的源代码实现、设计模式和PVM就足够了。
《Activiti实战》由四部分组成:准备章节(第65438章+0~2)介绍概念、特点、应用、架构,以及开发环境的构建和配置;基础章节(3~4章)先讲解ActivitiModeler和ActivitiDesigner两个流程设计工具的详细使用,再详细讲解BPMN2.0规范;实践篇(5~14)系统讲解了Activiti的用法、技巧和最佳实践,包括流程定义、流程实例、任务、子流程、多实例、事件和监听器。高级篇(15~21)阐述了Activiti不仅仅是一个引擎,通过集成WebService、规则引擎、JPA、ESB等各种服务和中间件,实际上是一个BPM平台。最后,通过源代码分析其设计模式和PVM。
关于作者:
资深软件开发工程师、架构师颜(咖啡兔)为Activiti贡献了大量代码,为Activiti在中国的推广普及做了大量工作。他在社会上有很高的威望和知名度,被称为中国活动领域的第一人。多年来,我一直从事OA、ERP等系统的开发和架构设计,一直关注和深入研究工作流引擎。目前,我在马骁汽车公司担任架构师,负责公司内部工作流程平台的建设。