1.创建Springboot项目打开IDEA,通过File->New->Project...->SpringInitializr新建一个Springboot项目在接下来的界面中,填写项目名称Name,JDK选择8,接下来选择Springboot2.6.2点击完成生成一个空的Springboot工程,pom.xml文件内容:2.添加Flowable依赖包修改pom.xml文件在“properties”属性下添加:6.7.2注意,请确保Flowable版本与Springboot版本匹配,否则会启动失败。查看不同版本Flowable对应的springboot版本,参考:https://blog.csdn.net/JinYJ20...在“dependencies”属性下添加:org.flowableflowable-spring-boot-starter${flowable.version}该依赖会自动将正确的Flowable和Spring依赖添加到类路径中。注意:有时无法自动获取依赖的JAR。您可以右键单击项目并选择Maven->ReloadProject以强制手动刷新。现在你可以编写SpringBoot应用程序了:类,参数);}}Flowable需要一个数据库来存储数据。如果你运行上面的代码,你会得到一个异常提示,提示你需要将数据库驱动依赖添加到类路径中。3、添加数据源现在添加MySQL数据库依赖:mysqlmysql-connector-java8.0.13注意:MySQL依赖包的版本要根据你连接的数据库版本修改,否则可能连接失败8&serverTimezone=UTCspring.datasource.driverClassName=com.mysql.cj.jdbc.Driverspring.datasource.username=jinyangjiespring.datasource.password=jinyangjie应用启动成功后,查看数据库可以看到Flowable表已经自动创建:注意:如果报错“Causedby:java.lang.RuntimeException:ExceptionwhileinitializingDatabaseconnection”出现,请确保数据源配置项正确,并检查MySQL依赖包版本是否匹配。将使用RESTAPI。添加以下依赖:org.springframework.bootspring-boot-starter-web${spring.boot.version}2.6.2下面是一个使用Controller和Service层的简单例子。示例来自Flowable官方文档。4.2添加流程文件resources/processes目录下的任何BPMN2.0流程定义都会被自动部署。创建一个流程目录并在其中创建一个示例流程定义(名为one-task-process.bpmn20.xml)。4.3服务层代码示例新建一个Spring服务类,创建两个方法:一个用于启动进程,一个用于获取给定任务的任务处理程序列表。这里只是简单的包装了Flowable的调用,但是在实际使用场景中会比这个复杂很多。导入org.flowable.engine.RuntimeService;导入org.flowable.engine.TaskService;导入org.flowable.task.api.Task;导入org.springframework.beans.factory.annotation.Autowired;导入org.springframework.stereotype.Service;importorg.springframework.transaction.annotation.Transactional;importjava.util.List;@ServicepublicclassMyService{@AutowiredprivateRuntimeServiceruntimeService;@Autowired私有任务服务任务服务;@TransactionalpublicvoidstartProcess(){runtimeService.startProcessInstanceByKey("oneTaskProcess");}@TransactionalpublicListgetTasks(Stringassignee){returntaskService.createTaskQuery().taskAssignee(assignee).list();}}4.4controller层代号示例@RestControllerpublicclassMyRestController{@AutowiredprivateMyServicemyService;@RequestMapping(value="/process",method=RequestMethod.POST)publicvoidstartProcessInstance(){myService.startProcess();}@RequestMapping(value="/tasks",method=RequestMethod.GET,produces=MediaType.APPLICATION_JSON_VALUE)publicListgetTasks(@RequestParamStringassignee){Listtasks=myService.getTasks(assignee);Listdtos=newArrayList();for(Tasktask:tasks){dtos.add(newTaskRepresentation(task.getId(),task.getName()));}返回dtos;}staticclassTaskRepresentation{privateStringid;私有字符串名称;publicTaskRepresentation(Stringid,Stringname){this.id=id;this.name=名称;}publicStringgetId(){返回ID;}publicvoidsetId(Stringid){this.id=id;}publicStringgetName(){返回名称;}publicvoidsetName(字符串名称){this.name=名称;}}}SpringBoot会自动扫描组件,找到我们在应用类中添加的@Service和@RestController再次运行应用,此时我们就可以和RESTAPI进行交互了。例如,使用cURL:curlhttp://localhost:8080/tasks?assignee=jinyangjie[]curl-XPOSThttp://localhost:8080/processcurlhttp://localhost:8080/tasks?assignee=jinyangjie[{"id":"b6350a6d-7070-11ec-bd1b-0a0027000006","name":"mytask"}]5.总结本文介绍了Springboot的初步集成。显然,还有很多SpringBoot相关的内容还没有提到,比如打包WAR文件、SpringSecurity支持等,这些会在后面的章节中介绍。