activiti工作流框架初次发布就遇到乱码问题
公司用到工作流框架 打算自己下过来 了解一下用法 这个框架的入门真的是蛮烦的 用户手册根本没法看 最后找到个请假案例 http://blog..net/a67474506/article/details/38266129 前面按照所说部署后 在发布流程的时候 会报这样一个错误
### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ?肟駴?譯冟詌鹧L鹆LP 偋^x㏑{御??r??ヘN??橘噤汆屡?P*會?啁谶} at line 2
一个语法错误,又伴随着乱码,当时第一思路是语法有问题,因为百度的时候有看到一个说与MYSQL的保留字leave冲突的例子,于是把所有的leave换成leaves,结果还是一样的错误,于是打算先把乱码解决了再说,把数据库,eclipse,换成utf8后依然没有解决,最后再环境变量中也去设置了utf8,依然没有。然后就没有别的思路了 一筹莫展到处乱看的时候,发现这么一个思路
//开始莫名其妙遇到数据库连接乱码,后台强行把jdbc改成这样就没事了(为什么说强行,因为很多示例都没有这么加) jdbc:mysql://localhost:3306/activiti?useUnicode=true;characterEncoding=utf-8
于是我也这样弄了,不过要指出的是,中间的分号“;”,要用`&`代替 这样就完成了流程的发布,以前不明白数据库连接为什么一定要这样写,这下认识到了,至少是个排除办法
@Test public void deployFlow() { RepositoryService repositoryService = processEngine .getRepositoryService(); InputStream in = this.getClass().getClassLoader() .getResourceAsStream("myActiviti.zip"); ZipInputStream zipInputStream = new ZipInputStream(in); DeploymentBuilder addZipInputStream = repositoryService.createDeployment() .addZipInputStream(zipInputStream).name("myProcess"); addZipInputStream.deploy(); }
这段中方法内第一行processEngine.getRepositoryService(); 其中processEngine的声明是通过如下代码生成的全局变量
ProcessEngine processEngine =ProcessEngines.getDefaultProcessEngine();
3、数据库连接写错的话只会报空指针异常 是因为ProcessEngines.getDefaultProcessEngine();这段代码要解析配置文件,数据库没连上解析不成功 ,所以实例化一个null出来