自动部署其实SpringBoot集成Activiti7之后,支持了自动部署的功能,接下来我们也来一起学习一下。
准备流程图首选我们来准一个要自动部署的流程图文件,这里可以直接使用前面我们画好的流程图,改造一下即可。
复制bpmn-01.xml,并修改名称为auto-deployment.bpmn20.xml,文件名必须以.bpmn20.xml结尾,SpringBoot才认识
在auto-deployment.bpmn20.xml中修改process的id属性值,以避免后续部署时流程定义重复
拷贝到自动部署目录把准备好的auto-deployment.bpmn20.xml文件拷贝到项目resources/processes目录下,没有自己可以创建一下。
启动自动部署接下来直接启动类,启动完成后,我们可以在控制台看见下面日志,即可说明程序部署成功了。
同时也可以在act_re_deployment表中看见相关信息:
如果我们不删除xml文件,再次重启启动类,可以在控制台看见一下信息,则说明SpringBoot自动部署会检查流程图xml是否有变更,如果没有则跳过,有则会 ...
接口文档地址:https://github.com/LisianthusW/apidoc
1.API不要写在页面里,封装到js里
以赛事为例
2.涉及到哪些接口就把哪些接口写在封装的js里
3.哪个页面调用就在哪个页面引入API模块下的封装好的请求接口
4.methods声明调用的函数并通过方式调用,比如这里的页面加载就调用这个函数,有些地方是绑定到按钮里
5.绑定数据这里要对应好响应体里面返回的键值对
1.这是ping的结果
2.能ping通但浏览器输入一直访问不了
3.解决办法,找到系统网络设置的代理,将使用代理服务器关闭
4.如果想用代理的同时,也不影响域名的访问则在代理配置那里加上需要禁止使用代理的地址
《单人审批请假流程》开发到此,我们已经准备好了课程要使用到的环境,接下我们就先通过一个简单的《单人审批请假流程》来快速入门Activiti,通过案例来重点掌握:
Activiti相关术语概念
Activiti的开发步骤
Activiti相关表结构
单人审批请假流程:
首选看一下Activiti相关术语概念:
基本概念Activiti是一款主流的工作流 流程引擎,再此我们就先从工作流、流程引擎概念说起。
什么是工作流工作流( Workflow ):是一项将系统任务或操作抽取,再按照预定业务流程进行组织、协调、并自动化执行的技术。
我们也可以简单理解==工作流是一种简化审批业务流程开发的技术==,其主要是解决一些业务场景硬编码方式的成本高、效率低、变更慢等问题的技术。
复杂的业务流程,实现复杂度比较高,因此开发周期长,开发成本高,效率也低,如果发生需求变更,对之前复杂的代码进行修改,同样需要更长的时间,因此响应变更的速度呢也表现得慢。
工作流技术来实现类似复杂的业务,只需要集成流程引擎、画出流程中使用的表单、最后画出整个业务流程图,交给流程引 ...
0.项目开发中,真的有必要定义VO,BO,PO,DO,DTO这些吗?
存在即是合理的,业务复杂,人员协同性要求高的场景下,这些规范性的东西不按着来虽然不会出错,程序照样跑,但是遵守规范会让程序更具扩展性和可读性,都是前辈血淋淋的宝贵经验,为什么不用?
随着现在后端编程标准化程度越来越高,各种编程模型层出不穷。作为Java开发人员,大部分人不免要接触VO,BO,PO,DO,DTO之类的,但很多同学对这些概念一直以来都是云里雾里,团队开发过程中也总是处于混乱的状态,抓起来就用,本来是规范性的东西,却反而导致更加混乱了。
今天我们把这些概念掰开揉碎来讲解一下,力求有一个清晰的理解,在开发中能有所助益。文中又理解不到位的,也欢迎大家斧正。
1.概念
在讲具体的概念之前,我们先简单的讲一讲我们MVC开发模式。
MVC的简单定义:
M层负责与数据库打交道;
C层负责业务逻辑的编写;
V层负责给用户展示(针对于前后端不分离的项目,不分离项目那种编写模版的方式,理解V的概念更直观)。
而我们今天要说的VO,BO,PO,DO,DTO呢,就是穿梭在这M、V、C层之间的实体传输对象。
VO(View ...
BOM(Bill of Materials)是由Maven提供的功能,它通过定义一整套相互兼容的jar包版本集合,使用时只需要依赖该BOM文件,即可放心的使用需要的依赖jar包,且无需再指定版本号。BOM的维护方负责版本升级,并保证BOM中定义的jar包版本之间的兼容性。
为什么要使用BOM使用BOM除了可以方便使用者在声明依赖的客户端时不需要指定版本号外,最主要的原因是可以解决依赖冲突,如考虑以下的依赖场景:
123项目A依赖项目B 2.1和项目C 1.2版本: 项目B 2.1依赖项目D 1.1版本; 项目C 1.2依赖项目D 1.3版本;
在该例中,项目A对于项目D的依赖就会出现冲突,按照maven dependency mediation的规则,最后生效的可能是:项目A中会依赖到项目D1.1版本(就近原则,取决于路径和依赖的先后,和Maven版本有关系)。 在这种情况下,由于项目C依赖1.3版本的项目D,但是在运行时生效的确是1.1版本,所以在运行时很容易产生问题,如 NoSuchMethodError, ClassNotFoundException等。
如何定义BOM ...
易优评实现短信发送Demo1.购买短信服务我们需要在相关短信平台上购买服务,推荐一下三个平台
短信平台:
阿里云:https://www.aliyun.com/product/sms
* 推荐
腾讯云:https://cloud.tencent.com/product/sms
* 推荐
第三方厂商:
https://market.aliyun.com/products/57000002/cmapi00046920.html
* 提供测试模板、免审核、测试成本更低
已第三个短信平台为例:
如图所示价格表,根据自己的需求购买。购买成功后会在已购买服务内看到购买的产品:
2.功能实现
项目结构:
0.导入必须的依赖12345678910<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scop ...
1. 使用GitLab完成code review
2. CICD部署程序使用gitLab的自动部署功能,可以快速实现自动部署,完成运行。
3. 安装gitLab-runner上传安装包之后执行
1sudo rpm -ivh gitlab-runner-16.6.1-1.x86_64.rpm
之后运行注册命令
123456789101112131415sudo gitlab-runner register#输入地址http://hadoop104#输入token nqaTgGDeJyFsA5fzg8ck#输入描述[hadoop104]: ci#输入标签ci#输入记录标签WARNING: Support for registration tokens and runner parameters in the 'register' command has been deprecated in GitLab Runner 15.6 and will be replaced with support for authentication tokens. For more ...
实际单个模块的开发往往不是单独一个人来进行操作,当多个人协同开发相同的一个项目时,就会涉及到提交冲突的问题。
1. 不同人修改不同文件(1)在远程仓库添加gitLab.txt
(2)在本地IDEA中添加代码,继续进行第二个模块的开发
12345public class Module2 { public static void main(String[] args) { System.out.println("开始进行模块2的开发"); }}
(3)提交代码到远程仓库,此时会有报错信息
Git会智能识别,采用merge合并命令,拉取远端文件到本地进行合并。
(4)查看Git提交的全部历史记录,可以看到中间有拉取Gitee日志的部分
2. 不同人修改同文件的不同区域(1)远程仓库修改module1代码
12345public class Module1 { public static void main(String[] args) { System.o ...
1. GitFlow工作流介绍在项目开发过程中使用 Git 的方式常见的有:
1.1 集中式工作流所有修改都提交到 Master 这个分支。比较适合极小团队或单人维护的项目,不建议使用这种方式。
1.2 功能开发工作流功能开发应该在一个专门的分支,而不是在 master 分支上。适用于小团队开发。
1.3 GitFlow工作流公司中最常用于管理大型项目。为功能开发、发布准备和维护设立了独立的分支,让发布迭代过程更流畅。
1.4 Forking工作流在 GitFlow 基础上,充分利用了 Git 的 Fork 和 pull request 的功能以达到代码审核的目的。一般用于跨团队协作、网上开源项目。
2. 各分支功能介绍
2.1 主干分支 master主要负责管理正在运行的生产环境代码,永远保持与正在运行的生产环境完全一致。为了保持稳定性一般不会直接在这个分支上修改代码,都是通过其他分支合并过来的。
2.2 开发分支 develop主要负责管理正在开发过程中的代码。一般情况下应该是最新的代码。
2.3 功能分支 feature为了不影响较短周期的开发工作,一般把中长期开 ...








