bpmn-js http://www.e-learn.cn/tag/bpmn-js zh-hans Java可视化UML工作流系统(Activiti7+SpringBoot)完整无密云盘分享 http://www.e-learn.cn/topic/3823982 <span>Java可视化UML工作流系统(Activiti7+SpringBoot)完整无密云盘分享</span> <span><span lang="" about="/user/163" typeof="schema:Person" property="schema:name" datatype="">荒凉一梦</span></span> <span>2020-09-24 06:04:12</span> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"> <div class="con artical-content editor-preview-side"> <p><strong>下载地址:<a href="http://www.97yrbl.com/t-373.html" rel="nofollow">百度网盘</a></strong></p> <p>Java可视化UML工作流系统(Activiti7+SpringBoot)</p> <p>“程序是有逻辑的,业务是有流程的”,工作流引擎可以减少硬编码,高效处理业务需求变更,所以领悟工作流引擎背后的思想,将有助于在职场中高效交付工作结果,是助你奠定程序生涯迈向更高平台的“基石”。讲师倾囊相授三大核心:① 以“代码驱动式”教学模式,精讲最新版工作流引擎Activiti7核心组件;② 传授你业 务建模或者软件建模的“工程化思维”;③ 基于SpringBoot+Activiti+SpringSecurity 等技术栈,“手把手”带你设计与实战企业级的黑马项目:《通用型可视化UML工作流系统》。</p> <p>适合人群<br />有志于成为“程序员”的优秀青年<br />初入职场Java工程师<br />对业务建模、UML软件建模感兴趣的人<br /><br /><br /></p> <p>技术储备要求<br />熟悉Java基本语法<br />了解Maven基本使用<br />MySQL基本的CRUD<br /><br /><br /></p> <p>章节目录:<br />第1章 清晰的学习目标,让学习更轻松<br />首先项目演示了解项目整体情况,便于小伙伴通过本课程学习,能够最终做出的怎样的项目效果。同时,明确学习activiti工作流对今后工作的重要性,确立学习目标。<br />1-1 玩转黑马项目,“技术+业务”能力齐飞试看<br />第2章 开发前准备:环境搭建篇【选修】<br />所谓“君欲善其事,必先利其器”,因此本章带着小伙伴们将课程所需环境一一构建起来,小伙伴们可以结合自己情况,有选择有重点的去学习。注意:MySQL安装时讲解了如何开启远程访问、设置电脑防火墙;Maven国内镜像仓库修改等。...<br />2-1 JDK安装<br />2-2 Maven安装<br />2-3 MySQL安装<br />2-4 SpringBoot项目创建<br />2-5 BPMN插件<br />第3章 项目从git下载与打包部署<br />很多小伙伴在别的实战课程中的反馈:不知道如何下载源码,在本地或者部署到云等环境中,本章特别采用“倒叙”方式,方便小伙伴正确在仓库中下载源码,并在本地或者云环境部署,感受一下项目再进一步深入学习。<br />3-1 源码下载与运行<br />第4章 精讲最新版Activiti7核心组件【工程化思维,助你成为不敢想的团队中流砥柱】<br />所谓“九层之台起于垒土”,想要完成后续大项目《企业级可视化Activiti工作流系统》的开发任务,抓住核心将事半功倍,即:打通antiviti工作流引擎的任督二脉。本章精讲流程发布、启动;任务的创建、流转、完成,查询等,须注意领悟其背后工程化思维。...<br />4-1 Activiti7介绍<br />4-2 BPMN2.0标准<br />4-3 Springboot与Activit7整合试看<br />4-4 流程部署Deployment<br />4-5 流程定义ProcessDefinition<br />4-6 流程实例ProcessInstance<br />4-7 任务处理Task<br />4-8 历史任务HistoryService<br />4-9 UEL表达式(上)<br />4-10 UEL表达式(中)<br />4-11 UEL表达式(下)<br />4-12 流程网关-并行<br />4-13 流程网关-排他<br />4-14 流程网关-包容<br />第5章 Activiti 7 新特性尝鲜<br />本章开始学点“硬”技能,有难度,希望小伙伴们秉承不抛弃不放弃原则,死磕到底,顺利通关。由于Activiti7集成了SpringSecurity安全框架,因此本章先讲解安全框如何集成、配置,访问权限如何写,请求处理,用户与权限分配等。 ...<br />5-1 API新特性Proce***untime(上) 试看<br />5-2 API新特性Proce***untime(中)<br />5-3 API新特性Proce***untime(下)<br />5-4 API新特性TaskRuntime<br />5-5 SpringSecurity用户登录<br />5-6 SpringSecurity配置<br />5-7 BPMN-JS整合<br />第6章 项目:可视化UML工作流引擎web系统:需求分析与设计<br />项目开发前的准备,对页面功能使用设计软件绘制原型,并分析需求,规划接口类,类参数与返回值设计,建立数据库,用户表、业务表等功能设计,磨刀不误砍柴工,做好规划在动手写代码,做到胸有成竹。<br />第7章 项目:可视化UML工作流引擎web系统:后端接口设计与实现<br />本章讲解PostMan接口调试工具,基于调试工具,编写首页、用户、流程定义、流程实例、任务、历史任务这5模块,超过40个功能点的开发。为我们的工作流系统打好坚实的后台基础,穿插分享编程心得,例如SwaggerUI如何与Activit7和安全框架整合等。 ...<br />第8章 项目:可视化UML工作流引擎web系统:前端页面设计与实现<br />前端主要基于LayUI-mini+BPMN-JS,将掌握LayUI组件使用,ajax请求接口数据并渲染展示到页面上等。BPMN-JS首先基于官网中功能接口,并结合项目扩展官网接口、高亮显示接口可以绘制历史流程,元素点击事件可以绑定表单等操作。<br />第9章 项目:前后端接口联调与部署上线【适用于简历项目演示】<br />前后端数据绑定,把前端做的静态页面与后台的接口数据,通过前后端分离的主流形式,使用AJAX获取并绑定,以及前端处理后端返回来状态码,正确和异常信息等。将在Linux和Windows上部署,配置外网访问权限,方便小伙伴作为简历项目展示。 ...<br />第10章 项目复盘:企业级常见业务流程设计最佳实践(通用)<br />针对工作中遇到复杂极端业务流程,给出使用Activiti解决流程的方案,包括但不限于样品与质量控制子流程,网格化系统汇总任务平级审核、上级交办、下级分派、越级上报等场景,让小伙伴们能根据复杂的业务场景举一反三,在日后的工作中无往不利。...<br />第11章 课程总结:他山之石,可以攻玉<br />对课程的总结,强调课程总最重要的知识点和最容易出错的地方,愿小伙伴们:所学皆有用,扬帆起航,升职加薪,为自己的锦绣前程做铺垫!<br />本课程持续更新中<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /></p> </div> <div class="alert alert-success" role="alert"><p>来源:<code>oschina</code></p><p>链接:<code>https://my.oschina.net/u/4410409/blog/4559382</code></p></div></div> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field--label">标签</div> <div class="field--items"> <div class="field--item"><a href="/tag/spring-security" hreflang="zh-hans">Spring Security</a></div> <div class="field--item"><a href="/tag/bpmn-js" hreflang="zh-hans">bpmn-js</a></div> <div class="field--item"><a href="/tag/maven" hreflang="zh-hans">maven</a></div> <div class="field--item"><a href="/tag/mysql" hreflang="zh-hans">mysql</a></div> <div class="field--item"><a href="/tag/spring-boot" hreflang="zh-hans">Spring Boot</a></div> <div class="field--item"><a href="/tag/java" hreflang="zh-hans">java</a></div> <div class="field--item"><a href="/tag/activiti" hreflang="zh-hans">activiti</a></div> <div class="field--item"><a href="/tag/layui" hreflang="zh-hans">layui</a></div> <div class="field--item"><a href="/tag/jdk" hreflang="zh-hans">JDK</a></div> <div class="field--item"><a href="/tag/swagger-ui-0" hreflang="zh-hans">Swagger UI</a></div> </div> </div> Wed, 23 Sep 2020 22:04:12 +0000 荒凉一梦 3823982 at http://www.e-learn.cn vue项目中使用bpmn-基础篇 http://www.e-learn.cn/topic/3758443 <span>vue项目中使用bpmn-基础篇</span> <span><span lang="" about="/user/108" typeof="schema:Person" property="schema:name" datatype="">青春壹個敷衍的年華</span></span> <span>2020-08-15 04:36:25</span> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"> <span id="OSC_h4_1"></span> <h4><span style="font-family: 'Microsoft YaHei';">内容概述</span></h4> <p><span style="font-family: 'Microsoft YaHei'; font-size: 14px;">本系列“vue项目中使用bpmn-xxxx”分为七篇,均为自己使用过程中用到的实例,手工原创,目前陆续更新中。主要包括vue项目中bpmn使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。如果转载或通过爬虫直接爬的,格式特别丑,请来原创看:<a href="https://www.cnblogs.com/lemoncool/p/12660812.html" target="_blank" rel="nofollow">我是作者原文</a></span></p> <span id="OSC_h4_2"></span> <h4><span style="font-family: 'Microsoft YaHei';">前情提要</span></h4> <p><span style="font-family: 'Microsoft YaHei';">vue项目中的用到流程图bpmn,而<code>bpmn-js</code>官方的文档是英文的,也没有找到api文档。所以只能在使用过程中,自己不断爬坑填坑了。</span></p> <span id="OSC_h4_3"></span> <h4><span style="font-family: 'Microsoft YaHei';">首先,看一眼效果图</span></h4> <p><img alt="" width="569" height="225" class="b-lazy" data-src="https://img2020.cnblogs.com/blog/1312572/202005/1312572-20200512181330038-522357669.png" data-original="https://img2020.cnblogs.com/blog/1312572/202005/1312572-20200512181330038-522357669.png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /></p> <span id="OSC_h4_4"></span> <h4><span style="font-family: 'Microsoft YaHei';">1.安装bpmn-js</span></h4> <div class="cnblogs_code"> <pre><code><span style="font-family: 'Microsoft YaHei';">npm install bpmn-js --save</span></code></pre> </div> <span id="OSC_h4_5"></span> <h4><span style="font-family: 'Microsoft YaHei';">2.在main.js中引入样式</span></h4> <div class="cnblogs_code"> <pre><code><span style="font-family: 'Microsoft YaHei';">import 'bpmn-js/dist/assets/diagram-js.css'<span style="color: #000000;">; import </span>'bpmn-js/dist/assets/bpmn-font/css/bpmn-embedded.css';</span></code></pre> </div> <span id="OSC_h4_6"></span> <h4><span style="font-family: 'Microsoft YaHei';">3.vue页面引入并使用bpmn</span></h4> <div class="cnblogs_code"> <pre><code><span style="font-family: 'Microsoft YaHei';">import BpmnModeler from 'bpmn-js/lib/Modeler'<span style="color: #000000;">; import CustomPaletteProvider from </span>'./customPalette'<span style="color: #000000;">; import camundaExtension from </span>'./resources/camunda';</span></code></pre> </div> <span id="OSC_h4_7"></span> <h4><span style="font-family: 'Microsoft YaHei';">4.基本操作:前进、回退、bpmn文件导入、导出<br /></span></h4> <div class="cnblogs_code"> <img alt="" class="b-lazy" data-src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" data-original="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /><img alt="" class="b-lazy" data-src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" data-original="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /><div class="cnblogs_code_hide"> <pre><code>&lt;template&gt; &lt;div class="containerBox"&gt; &lt;el-button-group&gt; &lt;el-button type="primary" size="mini" @click="handleUndo"&gt;后退&lt;/el-button&gt; &lt;el-button type="success" size="mini" @click="handleRedo"&gt;前进&lt;/el-button&gt; &lt;el-button type="warning" size="mini" @click="handleDownload"&gt;下载&lt;/el-button&gt; &lt;el-<span style="color: #000000;">upload style</span>="display: inline-block;"<span style="color: #000000;"> :file</span>-list="fileList"<span style="color: #000000;"> class</span>="upload-demo"<span style="color: #000000;"> action</span>=""<span style="color: #000000;"> :auto</span>-upload="false"<span style="color: #000000;"> :show</span>-file-list="false"<span style="color: #000000;"> :http</span>-request="httpRequest"<span style="color: #000000;"> :on</span>-change="handleOnchangeFile"<span style="color: #000000;"> :on</span>-remove="handleRemove"<span style="color: #000000;"> :before</span>-remove="beforeRemove" &gt; &lt;el-button type="danger" size="mini"&gt;导入&lt;/el-button&gt; &lt;/el-upload&gt; &lt;/el-button-group&gt; &lt;div id="container"&gt;&lt;/div&gt; &lt;/div&gt; &lt;/template&gt; &lt;script&gt;<span style="color: #000000;"> import BpmnModeler from </span>'bpmn-js/lib/Modeler'<span style="color: #000000;">; import CustomPaletteProvider from </span>'./customPalette'<span style="color: #000000;">; import camundaExtension from </span>'./resources/camunda'<span style="color: #000000;">; export </span><span style="color: #0000ff;">default</span><span style="color: #000000;"> { name: </span>'index'<span style="color: #000000;">, data() { </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> { containerEl: </span><span style="color: #0000ff;">null</span><span style="color: #000000;">, bpmnModeler: </span><span style="color: #0000ff;">null</span><span style="color: #000000;">, fileList: [] }; }, mounted() { </span><span style="color: #0000ff;">this</span>.containerEl = document.getElementById('container'<span style="color: #000000;">); </span><span style="color: #0000ff;">this</span>.bpmnModeler = <span style="color: #0000ff;">new</span><span style="color: #000000;"> BpmnModeler({ container: </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.containerEl, moddleExtensions: {camunda: camundaExtension}, additionalModules: [CustomPaletteProvider] }); </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.create(); }, methods: { create() { </span><span style="color: #0000ff;">this</span>.bpmnModeler.createDiagram(() =&gt;<span style="color: #000000;"> { </span><span style="color: #0000ff;">this</span>.bpmnModeler.get('canvas').zoom('fit-viewport'<span style="color: #000000;">); }); }, handleRemove(file) { </span><span style="color: #0000ff;">for</span> (let i = 0; i &lt; <span style="color: #0000ff;">this</span>.fileList.length; i++<span style="color: #000000;">) { </span><span style="color: #0000ff;">if</span> (file.name === <span style="color: #0000ff;">this</span><span style="color: #000000;">.fileList[i].name) { </span><span style="color: #0000ff;">this</span>.fileList.splice(i, 1<span style="color: #000000;">); } } }, beforeRemove(file) { </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">this</span><span style="color: #000000;">.$confirm(`确定移除 ${file.name}?`); }, </span><span style="color: #008000;">//</span><span style="color: #008000;"> 后退</span> <span style="color: #000000;"> handleUndo() { </span><span style="color: #0000ff;">this</span>.bpmnModeler.get('commandStack'<span style="color: #000000;">).undo(); }, </span><span style="color: #008000;">//</span><span style="color: #008000;"> 前进</span> <span style="color: #000000;"> handleRedo() { </span><span style="color: #0000ff;">this</span>.bpmnModeler.get('commandStack'<span style="color: #000000;">).redo(); }, handleDownload() { </span><span style="color: #0000ff;">this</span>.bpmnModeler.saveXML({format: <span style="color: #0000ff;">true</span>}, (err, data) =&gt;<span style="color: #000000;"> { const dataTrack </span>= 'bpmn'<span style="color: #000000;">; const a </span>= document.createElement('a'<span style="color: #000000;">); const name </span>=<span style="color: #000000;"> `diagram.${dataTrack}`; a.setAttribute( </span>'href'<span style="color: #000000;">, `data:application</span>/bpmn20-xml;charset=UTF-8,${encodeURIComponent(data)}` <span style="color: #000000;"> ); a.setAttribute(</span>'target', '_blank'<span style="color: #000000;">); a.setAttribute(</span>'dataTrack', `diagram:download-<span style="color: #000000;">${dataTrack}`); a.setAttribute(</span>'download'<span style="color: #000000;">, name); document.body.appendChild(a); a.click(); document.body.removeChild(a); }); }, handleOnchangeFile(file) { const reader </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> FileReader(); let data </span>= ''<span style="color: #000000;">; reader.readAsText(file.raw); reader.onload </span>= (event) =&gt;<span style="color: #000000;"> { data </span>=<span style="color: #000000;"> event.target.result; </span><span style="color: #0000ff;">this</span>.bpmnModeler.importXML(data, (err) =&gt;<span style="color: #000000;"> { </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (err) { </span><span style="color: #0000ff;">this</span>.$message.info('导入失败'<span style="color: #000000;">); } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> { </span><span style="color: #0000ff;">this</span>.$message.success('导入成功'<span style="color: #000000;">); } }); }; } } } </span>&lt;/script&gt; &lt;style lang="scss"&gt;<span style="color: #000000;"> .containerBox { height: calc(100vh </span>-<span style="color: #000000;"> 220px); position: relative; #container { height: calc(</span>100% -<span style="color: #000000;"> 50px); } } </span>&lt;/style&gt;</code></pre> </div> <span>View Code</span> </div> <span id="OSC_h4_8"></span> <h4>5.后续</h4> <p>步骤4代码中,有2个import,是我在后面会讲到的,代码没有摘干净就传过来了。感谢 <a href="https://www.cnblogs.com/lemoncool/p/12660812.html#4574878" rel="nofollow">@</a>baogege 发现提醒。</p> <p><span style="color: #040404;">import CustomPaletteProvider <span>from <span>'./customPalette';</span></span></span></p> <p><span style="color: #040404;"><span><span> <span>import camundaExtension <span>from <span>'./resources/camunda';</span></span></span></span></span></span></p> <p><span style="color: #040404;">这两句引入的含义:第一个文件 customPalette 是自定义的左侧工具栏,如果不需要自定义,可直接把引入去掉,不影响。如果需要自定义,在我的博客这系列的第五篇里讲到了<a href="https://www.cnblogs.com/lemoncool/p/12870119.html" target="_blank" rel="nofollow"><span style="color: #040404;">如何自定义platter</span></a>,可以借鉴一下。第二个文件是定义各个元素拥有的属性配置。<a href="https://blog-static.cnblogs.com/files/lemoncool/camunda.js" target="_blank" rel="nofollow"><span style="color: #040404;">我放在了附件中(点我!我是camunda文件)</span></a>,小伙伴们自己下载一下,下载后改一下后缀,改成.json,(因为上传时,.json格式不支持上传,所以我把后缀改成js传的)。</span></p> <p>最近在用这个bpmn组件画图,遇到了很多知识点,例如预览、更新节点名字、更新节点颜色、点击xml获取节点 id、根据id获取元素实例,后续慢慢整理~</p> <span id="OSC_h4_9"></span> <h4>可爱的你可能还需要</h4> <ul><li><a href="https://www.cnblogs.com/lemoncool/p/12870119.html" rel="nofollow">vue项目中使用bpmn-自定义platter</a></li> <li><a href="https://www.cnblogs.com/lemoncool/p/12714870.html" rel="nofollow">vue项目中使用bpmn-流程图预览篇</a></li> <li><a href="https://www.cnblogs.com/lemoncool/p/12808790.html" target="_blank" rel="nofollow">vue项目中使用bpmn-节点添加颜色</a></li> <li><a href="https://www.cnblogs.com/lemoncool/p/12746217.html" rel="nofollow">vue项目中使用bpmn-节点篇</a></li> </ul><div class="alert alert-success" role="alert"><p>来源:<code>oschina</code></p><p>链接:<code>https://my.oschina.net/u/4288691/blog/4277185</code></p></div></div> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field--label">标签</div> <div class="field--items"> <div class="field--item"><a href="/tag/bpmn-js" hreflang="zh-hans">bpmn-js</a></div> <div class="field--item"><a href="/tag/javascript" hreflang="zh-hans">javascript</a></div> <div class="field--item"><a href="/tag/vuejs" hreflang="zh-hans">Vue.js</a></div> </div> </div> Fri, 14 Aug 2020 20:36:25 +0000 青春壹個敷衍的年華 3758443 at http://www.e-learn.cn