按照網上的七拼八湊整合網頁版的部署將遇到的問題歸置如下:
本人的springboot版本是:1.5.13.RELEASE
工作流相關:
<!--工作流--> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter-basic</artifactId> <version>${activiti.version}</version> </dependency> <!-- Activiti 流程圖 --> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-diagram-rest</artifactId> <version>${activiti.version}</version> </dependency> <!-- Activiti 在線設計 --> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-modeler</artifactId> <version>${activiti.version}</version> </dependency>
1、啟動之后訪問跳出輸入用戶名,密碼,原因:activiti集成的安全校驗
解決:在啟動類加入:
@EnableAutoConfiguration(exclude = { org.activiti.spring.boot.SecurityAutoConfiguration.class, org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class })
2、在線編輯器modeler.html訪問的時候是空白,大部分是因為這個頁面所需要的元素沒有取到,檢查相關的路徑,
editor-app/app-cfg.js這個文件修改如下(都是按照實際項目配置來的,這個service可以按照自己實際的來,后面的三個類保持一致即可)
ACTIVITI.CONFIG = {
//'contextRoot' : '/activiti-explorer/service',
'contextRoot' : '/service'
};
查看是否改成系統一致的路徑,
遷移過來的三個類:StencilsetRestResource.java
、ModelEditorJsonRestResource.java
、ModelSaveRestResource.java
統一在類上加@RequestMapping(value = "/service")
修改StencilsetRestResource.java
(如果在拷貝stencilset.json
時沒有放在resources目錄下)
InputStream stencilsetStream = this.getClass().getClassLoader().getResourceAsStream("stencilset.json");把它改為相應的位置,
3、modeler.html?modelId=xxx里面的符號出現了方框(svg矢量圖形都變成了不可辨識的字符),原因就是都配置了pom的資源路徑下,pom會掃面資源路徑,把變量替換成相應的值,二進制的文件就會收到破壞,把先關文件不掃描即可,如下配置
<!-- 此plugin可以用利用此plugin,把源代碼中的xml文件,打包到相應位置,這里主要是為了打包Mybatis的mapper.xml文件,如下只 是截取了與 maven-resources-plugin 相關pom文件配置,其它部分按照自己的工程目錄來。 --> <plugin> <artifactId>maven-resources-plugin</artifactId> <executions> <execution> <id>copy-xmls</id> <phase>process-sources</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>target/classes</outputDirectory> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <excludes> <exclude>static/fonts/**</exclude> <exclude>static/plugins/processes/editor-app/**</exclude> </excludes> </resource> <resource> <directory>src/main/resources</directory> <filtering>false</filtering> <includes> <include>static/fonts/**</include> <include>static/plugins/processes/editor-app/**</include> </includes> </resource> </resources> </configuration> </execution> </executions> </plugin>
4、model.html保存頁面報錯(400錯誤Required request body is missing),修改ModelSaveRestResource方法的參數,可以整個替換掉這個方法即可
@RequestMapping(value = "/model/{modelId}/save", method = RequestMethod.PUT) @ResponseStatus(value = HttpStatus.OK) public void saveModel(@PathVariable String modelId, String name, String description, String json_xml, String svg_xml) { try { Model model = repositoryService.getModel(modelId); ObjectNode modelJson = (ObjectNode) objectMapper.readTree(model.getMetaInfo()); modelJson.put(MODEL_NAME, name); modelJson.put(MODEL_DESCRIPTION, description); model.setMetaInfo(modelJson.toString()); model.setName(name); repositoryService.saveModel(model); repositoryService.addModelEditorSource(model.getId(), json_xml.getBytes("utf-8")); InputStream svgStream = new ByteArrayInputStream(svg_xml.getBytes("utf-8")); TranscoderInput input = new TranscoderInput(svgStream); PNGTranscoder transcoder = new PNGTranscoder(); // Setup output ByteArrayOutputStream outStream = new ByteArrayOutputStream(); TranscoderOutput output = new TranscoderOutput(outStream); // Do the transformation transcoder.transcode(input, output); final byte[] result = outStream.toByteArray(); repositoryService.addModelEditorSourceExtra(model.getId(), result); outStream.close(); } catch (Exception e) { LOGGER.error("Error saving model", e); throw new ActivitiException("Error saving model", e); } }
待續