Error resolving version for plugin ‘org.apache.maven.plugins:maven-compiler-plugin’ from the repositories

问题

在创建maven工程的父工程刚开始就出现了上面的错误,可以看到是org.apache.maven.plugin的maven-complier-plugin的版本解析错误。错误的配置如下:

解决

为插件声明版本,添加标签:

+1

Activiti6生成实时流程图并高亮已执行流程节点和连接线

前言

Activiti5.x 的追踪流程节点查找,可以用 ActivityImpl 这个类来实现,但是在 Activiti6 版本里,pvm包整个类包都被删除,也就是说不能用 ActivityImpl 这个类来实现流程图追踪了。

不过Activiti6也有自己的实现方法,主要是利用 ProcessDiagramGenerator 这个接口实现类,去实现 generateDiagram 这个方法。默认可以采用 ProcessDiagramGenerator 的子类 DefaultProcessDiagramGenerator 调用 generateDiagram 实现流程图。当然也可以自定义相应的子类 CustomProcessDiagramGenerator 去定制化实现。

生成流程图核心方法

其中比较重要的是 bpmnmodel,highLightedActivities,highLightedFlows 这三个参数。

bpmnmodel模型通过以下代码获取

highLightedActivities(需要高亮的执行流程节点集合的获取)获取方法的核心代码

highLightedFlows(需要高亮流程连接线集合的获取)获取方法的核心代码

activiti6生成流程图代码

activiti5.x生成流程图代码

自定义样式生成流程图思路

activiti提供的样式可能不是特别美观,它的api目前只能改字体大小。如果遇到改颜色等,可以通过重写ProcessDiagramCanvas这个类,并实现ProcessDiagramGenerator这个类的接口。

生成的实时流程图效果图

+2

SpringBoot2.0整合activiti7示例

前文《SpringBoot2.0整合activiti6示例》已经介绍了SpringBoot2.0与activiti6的集成,虽然现在activiti6的使用量还是很大,但是activiti7将来毕竟是趋势,所以本文将介绍如何整合SpringBoot2.0与activiti7,并且通过这两次代码整合,最后会分析activiti7相比activiti6有哪些改进。

继续阅读“SpringBoot2.0整合activiti7示例”
0

SpringBoot2.0整合activiti6示例

最近公司项目用到了activiti流程引擎,正好是自己在做,那就记录一下,方便自己后续查看,也方便需要的朋友查看。

既然已经开始看这篇代码整合文章了,我就当大家已经对activiti已经有了初步的了解了。

初始化activiti的表

activiti默认是H2数据库,这边我们使用mysql,从官方下载的文件里可以找到sql脚本,这边要注意不要选择mysql55那个版本的脚本,那是旧版本的mysql使用的(当然如果你的mysql版本低于5.5那当我没说)

另外就是,也可以不用手工运行脚本,当我们第一次在代码里使用activiti时,会自动帮我们建好表。

maven的pom.xml文件

activiti-spring-boot-starter,把版本换一下即可

application.properties

最后两行日志配置是为了使用activiti时在控制台打印它的sql,方便查看

log4j.properties

inspectProcess.bpmn20.xml

这是我的流程文件,可以通过eclipse或idea的activiti插件或者官方的流程设计器来进行设计

在resources资源目录下新建processes目录,把资源文件放进去, src/main/resources/processes, springboot默认是到这个文件夹里去找流程图进行部署的

ActivitiConfig.java

LeaveProcessController.java

工程图

这样SpringBoot2.0整合activiti6示例就完成了。如果有问题欢迎留言。

+2

解决JasperReport生成PDF中文无法显示问题

问题描述

JasperReport是一个纯Java写的开源免费报表工具库,有着易于学习,轻松上手的特点。使用过程就是先在它的报表的设计软件TIBCO Jaspersoft Studio(以前是IReport)里设计报表,然后编译jrxml,把生成的jasper文件拷贝到我们的web工程资源目录下,然后再调用jasper的api生成pdf即可。但是国外的东西就是有个不好的地方,生成PDF的时候中文不支持,所以得针对中文做下特殊处理。

JasperReport在用TIBCO Jaspersoft Studio进行报表设计的时候默认采用的字体是SansSerif,中文并不在其处理范围之内,这边我们把字体显示设置为华文宋体,如下图:

查看报表jrxml模板源代码可看到已经显示加了华文宋体。

解决方法

报表模板文件中显示设置中文字体,生成PDF文件的时候中文其实还是不会显示,因为JasperRepeat的包中压根就没有华文宋体的字体库STSONG.TTF,需要在工程中放入该字体库,并配置JasperReport的字体模板fonts.xml,添加配置文件jasperreports_extension.properties指明字体处理工厂类和字体模板。

Windows操作系统中的字体文件可以在C:\Windows\Fonts目录下找到,华文宋体的字体文件STSONG.TTF就在该目录下面。

工程结构如下图:

fonts.xml

jasperreports_extension.properties

经过上述处理后,再生成PDF文件,中文已经可以正常显示了。

中文字体下载

链接:https://pan.baidu.com/s/1HAe0Vt92HnBY-TgMyF9pgA
提取码:r0yq

0

URI is not registered ( Setting | Project Settings | Schemas and DTDs )

问题

URI is not registered ( Setting | Project Settings | Schemas and DTDs )

在idea中,写spring配置文件的时候,出现了上面这个错误。错误提示如下:

很明显的两行错误提示。将鼠标放在上面,软件会提示“URI is not registered ( Setting | Project Settings | Schemas and DTDs )”,翻译过来就是统一资源标识符没有注册。

解决方法

在idea里依次点击file–>settings…–>languages & frameworks–>

如下图:

注意红色圈中的部分。点击“+”号,将第一条红色提示复制添加进去就行了。

如图所示,问题解决

0

IDEA 里 Build、Rebuild、Recompile 的区别

Recompile:对选定的目标(Java 类文件),进行强制性编译,不管目标是否是被修改过。
Rebuild:对选定的目标(Project 项目),进行强制性编译,不管目标是否是被修改过。由于 Rebuild 的目标只有 Project,所以 Rebuild 每次花的时间会比较长。
Build:对选定的目标(Project 项目),编译那些被修改的文件。

+2

Elasticsearch教程(四):安装和使用Elasticsearch-Head插件

虽然我们可以使用curl等客户端工具访问Restful API对Elasticsearch进行操作,但也有一些客户端工具提供对于ElasticSearch更加友好的可视化操作支持,比如elasticsearch-head。所以这篇文章介绍如何安装和使用Elasticsearch-Head。

Elasticsearch-Head概要信息

项目说明
开源/闭源开源
源码管理地址https://github.com/mobz/elasticsearch-head
License类别Apache License 2.0
开发语言Javascript
当前稳定版本5.0.0(2018/4/10)
下载地址:github releasehttps://github.com/mobz/elasticsearch-head/releases

使用方式

早期版本的elasticsearch-head可以直接以插件的方式在Elasticsearch中进行安装,在Elasticsearch 5之后则需要将elasticsearch-head服务单独运行(依赖于Node.js),并且支持Chrome的插件方式或者Docker容器运行方式。

Chrome插件方式

安装地址:https://chrome.google.com/webstore/detail/elasticsearch-head/ffmkiejjmecolpfloofpjologoblkegm/

点击上述Add to Chrome按钮完成安装,然后点击ElasticSearch Head按钮即可在Chrome中使用了

可以看到此时状态显示为:cluster health: not connected(未连接的状态),这是因为我们还没配置ElasticSearch的服务连接,只要把我们之前安装好的ElasticSearch服务地址http://192.168.0.123:9200/填到connect按钮前面的框内,然后点击connect。

因为我是单点的,所以健康度是yellow,黄色不影响使用,红色就要解决。

Node服务方式

准备node环境

Elasticsearch-head插件要求Node.js环境,并且Node.js的版本大于等于6.0。所以需要先看下自己系统里是否已安装node.js,可以使用命令 npm -v 查看,我这边显示是 6.13.4。如果没有安装,需要先行安装。

下载 head插件

接下来,咱们先在GitHub上找到head插件,地址:https://github.com/mobz/elasticsearch-head。咱们将其下载/克隆到服务器上。

需要说明的是,因为前面已经说过elasticsearch 5之后其实elasticsearch-head并不是以插件的方式安装,所以我们不需要把head下载到elasticsearch的/plugins/目录下,自己找个合适的位置存放即可。

下载完成后,进入 elasticsearch-head的目录下,按顺序执行命令:

安装head

这步可能有点慢

启动head

看到Started connect web server on http://localhost:9100,说明head 服务就成功安装,并且正常启动了。

启动后,我们可以通过 http:// localhost :9100 进行访问。

但是,实际安装的过程中可能会遇到问题。

问题

npm ERR! phantomjs-prebuilt@2.1.16 install: node install.js

解决

npm install phantomjs-prebuilt@2.1.16 –ignore-scripts

Elasticsearch简单使用

可以看到我们上一篇文章创建的索引phone也出现了

点击数据浏览,再点击需要查看的索引,就可以查看该索引下的所有记录。

也可以使用它的基本查询和复合查询查询记录

下篇文章介绍复合查询。

0

Elasticsearch教程(三):增删改查初体验

Elasticsearch 是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。

所以可以使用postman来测试。

增加一个索引

PUT方式请求 http://192.168.0.123:9200/phone,phone是我要建的索引

服务器返回一个 JSON 对象,里面的acknowledged字段表示操作成功。

这就建好了,看起来很简单。

插入一个记录

在索引phone下存放一个文档,它的类型是apple,文档里有一些属性。

POST方式请求 http:// 192.168.0.123 :9200/phone/apple

请求体里加上我们的数据

返回的 JSON 对象,会给出 Index、Type、Id、Version 等信息。

当然,我们也可以以指定id的方式插入数据, 就像这样http:// 192.168.0.123 :9200/phone/apple/1,这样该条记录的id就是1,但是正常的使用场景中,不指定id会比较好。

注意,如果我们没有创建 Index phone,就直接执行上面的命令插入数据也不会报错,ElasticSearch会直接生成指定的 Index。所以我们在插入数据时要注意 Index 的名称不要写错。

查看记录

根据id查看我们刚刚插入的那条记录,其中 pretty 表示以友好阅读的方式展示结果

GET方式请求 http:// 192.168.0.123 :9200/phone/apple/Q5ci-HABIIllKMiCQFU5?pretty=true

返回结果

更新记录

PUT方式请求 http:// 192.168.0.123 :9200/phone/apple/Q5ci-HABIIllKMiCQFU5

请求体是要更新的内容

返回结果

删除记录

DELETE方式请求 http:// 192.168.0.123 :9200/phone/apple/Q5ci-HABIIllKMiCQFU5

0