一、下載官方提供war包
1、在工程下建flowable包,將內容復制到下面
復制flowable-modeler\WEB-INF\classes\static到自己項目中
2修改js引用路徑 app-cfg.js
FLOWABLE.CONFIG = { 'onPremise' : true, 'contextRoot' : "", 'webContextRoot' : "/static/flowable", 'datesLocalization' : false };
3、引入springboot官方jar包
<dependency> <groupId>org.flowable</groupId> <artifactId>flowable-spring-boot-starter</artifactId> <version>${flowable.version}</version> </dependency> <dependency> <groupId>org.flowable</groupId> <artifactId>flowable-ui-modeler-rest</artifactId> <version>${flowable.version}</version> <exclusions> <exclusion> <artifactId>guava</artifactId> <groupId>com.google.guava</groupId> </exclusion> </exclusions> </dependency>
4、添加用戶認證,目前比較靠譜的代碼如下:
@Controller
@RequestMapping("/app")
public class AccountUtil{
@RequestMapping("/rest/account")
@ResponseBody
public UserRepresentation getAccount() {
User user=new User() {
@Override
public String getId() {
return "admin";
}
@Override
public void setId(String s) {
}
@Override
public String getFirstName() {
return "admin";
}
@Override
public void setFirstName(String s) {
}
@Override
public void setLastName(String s) {
}
@Override
public String getLastName() {
return "admin";
}
@Override
public void setEmail(String s) {
}
@Override
public String getEmail() {
return "admin";
}
@Override
public String getPassword() {
return "admin";
}
@Override
public void setPassword(String s) {
}
@Override
public boolean isPictureSet() {
return false;
}
};
user.setId("admin");
SecurityUtils.assumeUser(user);
UserRepresentation userRepresentation = new UserRepresentation();
userRepresentation.setId("admin");
userRepresentation.setFirstName("admin");
List<String> privileges=new ArrayList<>();
List<String> pris = new ArrayList<>();
pris.add(DefaultPrivileges.ACCESS_MODELER);
pris.add(DefaultPrivileges.ACCESS_IDM);
pris.add(DefaultPrivileges.ACCESS_ADMIN);
pris.add(DefaultPrivileges.ACCESS_TASK);
userRepresentation.setPrivileges(privileges);
return userRepresentation;
}
}
二、填坑
1、啟動項目,看看抱什么錯誤,然后挨個修復
Caused by: java.lang.IllegalStateException: Required key 'idm.app.url' not found at org.springframework.core.env.AbstractPropertyResolver.getRequiredProperty(AbstractPropertyResolver.java:184) at org.springframework.core.env.AbstractEnvironment.getRequiredProperty(AbstractEnvironment.java:552) at org.flowable.app.service.idm.RemoteIdmServiceImpl.init(RemoteIdmServiceImpl.java:67) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:365) at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:308) at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:135) ... 31 common frames omitted
添加idm配置,不通版本可能對應key不一樣,這個根據提示自己添加就行
idm.app.url=http://localhost:8080/ idm.admin.user=admin idm.admin.password=test
2、重啟項目可以看到成功頁面,其實還未成功,和后台數據還沒連起來
創建流程報錯
服務起返回: {"message":"Internal server error","exception":"nested exception is org.apache.ibatis.exceptions.PersistenceException: \r\n### Error querying database. Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for org.flowable.app.domain.editor.Model.selectModelByParameters\r\n### Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for org.flowable.app.domain.editor.Model.selectModelByParameters"}
發現mybatis模板沒有綁定:
添加配置,多個可以用,隔開
mybatis-plus.mapper-locations=classpath*:META-INF/modeler-mybatis-mappings/*.xml
3、再次重啟后繼續報錯
Caused by: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'URL [jar:file:/D:/Dev/Repository/org/flowable/flowable-ui-modeler-logic/6.1.2/flowable-ui-modeler-logic-6.1.2.jar!/META-INF/modeler-mybatis-mappings/Model.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving JdbcType. Cause: java.lang.IllegalArgumentException: No enum constant org.apache.ibatis.type.JdbcType.${blobType}
at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:120)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.parse(XMLMapperBuilder.java:92)
at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.buildSqlSessionFactory(MybatisSqlSessionFactoryBean.java:628)
... 111 common frames omitted
Caused by: org.apache.ibatis.builder.BuilderException: Error resolving JdbcType. Cause: java.lang.IllegalArgumentException: No enum constant org.apache.ibatis.type.JdbcType.${blobType}
at org.apache.ibatis.builder.BaseBuilder.resolveJdbcType(BaseBuilder.java:73)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.buildResultMappingFromContext(XMLMapperBuilder.java:382)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:280)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:252)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElements(XMLMapperBuilder.java:244)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:116)
... 113 common frames omitted
Caused by: java.lang.IllegalArgumentException: No enum constant org.apache.ibatis.type.JdbcType.${blobType}
at java.lang.Enum.valueOf(Enum.java:238)
at org.apache.ibatis.type.JdbcType.valueOf(JdbcType.java:25)
at org.apache.ibatis.builder.BaseBuilder.resolveJdbcType(BaseBuilder.java:71)
... 118 common frames omitted
找到Model.xml,發下如下代碼
<result property="tenantId" column="tenant_id" jdbcType="VARCHAR" />
添加如下配置
mybatis-plus.configuration-properties.blobType=BLOB mybatis-plus.configuration-properties.boolValue=TRUE mybatis-plus.configuration-properties.prefix=
如果遇到缺少個別參數,可以在js中通過搜索地址,然后再請求中添加內容
重啟終於好了!!!!!!!!!!
其實還未好,修改模板會出現不支持請求格式,可以重寫WebMvcConfigurationSupport.requestMappingHandlerAdapter方法
@Override public RequestMappingHandlerAdapter requestMappingHandlerAdapter() { RequestMappingHandlerAdapter adapter = new RequestMappingHandlerAdapter(); List<HttpMessageConverter<?>> converters = adapter.getMessageConverters(); MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter(); List<MediaType> supportedMediaTypes = new ArrayList<>(); MediaType textMedia = new MediaType(MediaType.TEXT_PLAIN, Charset.forName("UTF-8")); supportedMediaTypes.add(textMedia); MediaType jsonMedia = new MediaType(MediaType.APPLICATION_JSON, Charset.forName("UTF-8")); supportedMediaTypes.add(jsonMedia); MediaType urlencodeMedia = new MediaType(MediaType.APPLICATION_FORM_URLENCODED, Charset.forName("UTF-8")); supportedMediaTypes.add(urlencodeMedia); jsonConverter.setSupportedMediaTypes(supportedMediaTypes); converters.add(jsonConverter); adapter.setMessageConverters(converters); return adapter; }