0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用springboot完成流程的業(yè)務(wù)功能

jf_ro2CN3Fa ? 來(lái)源:芋道源碼 ? 2023-05-15 17:40 ? 次閱讀

總覽

一、flowable-ui部署運(yùn)行

二、繪制流程圖

三、后臺(tái)項(xiàng)目搭建

四、數(shù)據(jù)庫(kù)

五、流程引擎API與服務(wù)

六、參考資料

總覽

使用flowable自帶的flowable-ui制作流程圖

使用springboot開發(fā)流程使用的接口完成流程的業(yè)務(wù)功能

基于 Spring Boot + MyBatis Plus + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

項(xiàng)目地址:https://github.com/YunaiV/ruoyi-vue-pro

視頻教程:https://doc.iocoder.cn/video/

一、flowable-ui部署運(yùn)行

flowable-6.6.0 運(yùn)行 官方demo

參考文檔:

https://flowable.com/open-source/docs/bpmn/ch14-Applications/

1、從官網(wǎng)下載flowable-6.6.0 : https://github.com/flowable/flowable-engine/releases/download/flowable-6.6.0/flowable-6.6.0.zip

2、將壓縮包中的 flowable-6.6.0warsflowable-ui.war 丟到Tomcat中跑起來(lái)

3、打開http://localhost:8080/flowable-ui 用賬戶:admin/test 登錄

44b689c2-f0e2-11ed-90ce-dac502259ad0.png

4、進(jìn)入APP.MODELER創(chuàng)建流程,之后可以導(dǎo)出流程到項(xiàng)目中使用,或者配置apache-tomcat-9.0.37webappsflowable-uiWEB-INFclassesflowable-default.properties連接本地?cái)?shù)據(jù)庫(kù)

44cedb80-f0e2-11ed-90ce-dac502259ad0.png

注意:需要將java驅(qū)動(dòng)jar(mysql-connector-java-5.1.45.jar)復(fù)制到 apache-tomcat-9.0.37webappsflowable-restWEB-INFlib

這樣創(chuàng)建的流程后端程序就能直接使用

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

項(xiàng)目地址:https://github.com/YunaiV/yudao-cloud

視頻教程:https://doc.iocoder.cn/video/

二、繪制流程圖

44e2322a-f0e2-11ed-90ce-dac502259ad0.png

根據(jù)業(yè)務(wù)需要在 flowable-ui>APP.MODELER里面繪制流程圖,示例如上圖。先解釋一些概念。

事件(event) 通常用于為流程生命周期中發(fā)生的事情建模,圖里是【開始、結(jié)束】?jī)蓚€(gè)圈。

順序流(sequence flow) 是流程中兩個(gè)元素間的連接器。圖里是【箭頭線段】。

網(wǎng)關(guān)(gateway) 用于控制執(zhí)行的流向。圖里是【菱形(中間有X)】

用戶任務(wù)(user task) 用于對(duì)需要人工執(zhí)行的任務(wù)進(jìn)行建模。圖里是【矩形】。

簡(jiǎn)單的工作流大概就這些元素(還有很多這里就不擴(kuò)展了)。下面描述一下工作流是如何流動(dòng)的。

首先啟動(dòng)了工作流后,由【開始】節(jié)點(diǎn)自動(dòng)流向【學(xué)生】節(jié)點(diǎn),等待該任務(wù)執(zhí)行。任務(wù)被分配的學(xué)生用戶執(zhí)行后流向 【老師】節(jié)點(diǎn),再次等待該任務(wù)執(zhí)行。被分配的老師用戶執(zhí)行后流向 【網(wǎng)關(guān)】,網(wǎng)關(guān)以此檢查每個(gè)出口,流向符合條件的任務(wù),比如這里老師執(zhí)行任務(wù)時(shí)是同意,就流向【校長(zhǎng)】節(jié)點(diǎn),等待該任務(wù)執(zhí)行。執(zhí)行后跟老師類似,同意后就流向【結(jié)束】節(jié)點(diǎn),整個(gè)流程到此結(jié)束。

繪圖細(xì)節(jié):

1、保留流程模型

44fdd386-f0e2-11ed-90ce-dac502259ad0.png

2、順序流可以設(shè)置流條件來(lái)限制流動(dòng),比如上面的網(wǎng)關(guān)出口就設(shè)置了條件

4515b7da-f0e2-11ed-90ce-dac502259ad0.png

3、任務(wù)需要分配任務(wù)的執(zhí)行用戶,可以分配到候選組,也可以直接分配到候選人

452a6ffe-f0e2-11ed-90ce-dac502259ad0.png

最后導(dǎo)出工作流文件

453d5920-f0e2-11ed-90ce-dac502259ad0.png

文件內(nèi)容





























這里先省略


4、bpmn文件導(dǎo)入

如果需要,可以把這個(gè)流程文件下載下來(lái),直接導(dǎo)入使用

4555cca8-f0e2-11ed-90ce-dac502259ad0.png

三、后臺(tái)項(xiàng)目搭建

后臺(tái)項(xiàng)目基于jdk8,使用springboot框架

spring 版本


org.springframework.boot
spring-boot-starter-parent
2.3.0.RELEASE
 

項(xiàng)目依賴pom.xml


org.flowable
flowable-spring-boot-starter
6.6.0


mysql
mysql-connector-java
5.1.45

項(xiàng)目配置application.yml

spring:
datasource:
url:jdbc//localhost:3306/flowable?useSSL=false&characterEncoding=UTF-8&serverTimezone=GMT%2B8
driver-class-name:com.mysql.jdbc.Driver
username:root
password:123456

四、數(shù)據(jù)庫(kù)

1、Flowable的所有數(shù)據(jù)庫(kù)表都以ACT_開頭。第二部分是說(shuō)明表用途的兩字符標(biāo)示符。服務(wù)API的命名也大略符合這個(gè)規(guī)則。

2、ACT_RE_: 'RE’代表repository。帶有這個(gè)前綴的表包含“靜態(tài)”信息,例如流程定義與流程資源(圖片、規(guī)則等)。

3、ACT_RU_: 'RU’代表runtime。這些表存儲(chǔ)運(yùn)行時(shí)信息,例如流程實(shí)例(process instance)、用戶任務(wù)(user task)、變量(variable)、作業(yè)(job)等。Flowable只在流程實(shí)例運(yùn)行中保存運(yùn)行時(shí)數(shù)據(jù),并在流程實(shí)例結(jié)束時(shí)刪除記錄。這樣保證運(yùn)行時(shí)表小和快。

4、ACT_HI_: 'HI’代表history。這些表存儲(chǔ)歷史數(shù)據(jù),例如已完成的流程實(shí)例、變量、任務(wù)等。

5、ACT_GE_: 通用數(shù)據(jù)。在多處使用。

1)通用數(shù)據(jù)表(2個(gè))

act_ge_bytearray:二進(jìn)制數(shù)據(jù)表,如流程定義、流程模板、流程圖的字節(jié)流文件;

act_ge_property:屬性數(shù)據(jù)表(不常用);

2)歷史表(8個(gè),HistoryService接口操作的表)

act_hi_actinst:歷史節(jié)點(diǎn)表,存放流程實(shí)例運(yùn)轉(zhuǎn)的各個(gè)節(jié)點(diǎn)信息(包含開始、結(jié)束等非任務(wù)節(jié)點(diǎn));

act_hi_attachment:歷史附件表,存放歷史節(jié)點(diǎn)上傳的附件信息(不常用);

act_hi_comment:歷史意見(jiàn)表;

act_hi_detail:歷史詳情表,存儲(chǔ)節(jié)點(diǎn)運(yùn)轉(zhuǎn)的一些信息(不常用);

act_hi_identitylink:歷史流程人員表,存儲(chǔ)流程各節(jié)點(diǎn)候選、辦理人員信息,常用于查詢某人或部門的已辦任務(wù);

act_hi_procinst:歷史流程實(shí)例表,存儲(chǔ)流程實(shí)例歷史數(shù)據(jù)(包含正在運(yùn)行的流程實(shí)例);

act_hi_taskinst:歷史流程任務(wù)表,存儲(chǔ)歷史任務(wù)節(jié)點(diǎn);

act_hi_varinst:流程歷史變量表,存儲(chǔ)流程歷史節(jié)點(diǎn)的變量信息;

3)用戶相關(guān)表(4個(gè),IdentityService接口操作的表)

act_id_group:用戶組信息表,對(duì)應(yīng)節(jié)點(diǎn)選定候選組信息;

act_id_info:用戶擴(kuò)展信息表,存儲(chǔ)用戶擴(kuò)展信息;

act_id_membership:用戶與用戶組關(guān)系表;

act_id_user:用戶信息表,對(duì)應(yīng)節(jié)點(diǎn)選定辦理人或候選人信息;

4)流程定義、流程模板相關(guān)表(3個(gè),RepositoryService接口操作的表)

act_re_deployment:部屬信息表,存儲(chǔ)流程定義、模板部署信息;

act_re_procdef:流程定義信息表,存儲(chǔ)流程定義相關(guān)描述信息,但其真正內(nèi)容存儲(chǔ)在act_ge_bytearray表中,以字節(jié)形式存儲(chǔ);

act_re_model:流程模板信息表,存儲(chǔ)流程模板相關(guān)描述信息,但其真正內(nèi)容存儲(chǔ)在act_ge_bytearray表中,以字節(jié)形式存儲(chǔ);

5)流程運(yùn)行時(shí)表(6個(gè),RuntimeService接口操作的表)

act_ru_task:運(yùn)行時(shí)流程任務(wù)節(jié)點(diǎn)表,存儲(chǔ)運(yùn)行中流程的任務(wù)節(jié)點(diǎn)信息,重要,常用于查詢?nèi)藛T或部門的待辦任務(wù)時(shí)使用;

act_ru_event_subscr:監(jiān)聽(tīng)信息表,不常用;

act_ru_execution:運(yùn)行時(shí)流程執(zhí)行實(shí)例表,記錄運(yùn)行中流程運(yùn)行的各個(gè)分支信息(當(dāng)沒(méi)有子流程時(shí),其數(shù)據(jù)與act_ru_task表數(shù)據(jù)是一一對(duì)應(yīng)的);

act_ru_identitylink:運(yùn)行時(shí)流程人員表,重要,常用于查詢?nèi)藛T或部門的待辦任務(wù)時(shí)使用;

act_ru_job:運(yùn)行時(shí)定時(shí)任務(wù)數(shù)據(jù)表,存儲(chǔ)流程的定時(shí)任務(wù)信息;

act_ru_variable:運(yùn)行時(shí)流程變量數(shù)據(jù)表,存儲(chǔ)運(yùn)行中的流程各節(jié)點(diǎn)的變量信息;

五、流程引擎API與服務(wù)

引擎API是與Flowable交互的最常用手段。總?cè)肟邳c(diǎn)是ProcessEngine。

45731ae2-f0e2-11ed-90ce-dac502259ad0.png

1、RepositoryService很可能是使用Flowable引擎要用的第一個(gè)服務(wù)。這個(gè)服務(wù)提供了管理與控制部署(deployments)與流程定義(process definitions)的操作。管理靜態(tài)信息,

2、RuntimeService用于啟動(dòng)流程定義的新流程實(shí)例。

3、IdentityService很簡(jiǎn)單。它用于管理(創(chuàng)建,更新,刪除,查詢……)組與用戶。

4、FormService是可選服務(wù)。也就是說(shuō)Flowable沒(méi)有它也能很好地運(yùn)行,而不必犧牲任何功能。

5、HistoryService暴露Flowable引擎收集的所有歷史數(shù)據(jù)。要提供查詢歷史數(shù)據(jù)的能力。

6、ManagementService通常在用Flowable編寫用戶應(yīng)用時(shí)不需要使用。它可以讀取數(shù)據(jù)庫(kù)表與表原始數(shù)據(jù)的信息,也提供了對(duì)作業(yè)(job)的查詢與管理操作。

7、DynamicBpmnService可用于修改流程定義中的部分內(nèi)容,而不需要重新部署它。例如可以修改流程定義中一個(gè)用戶任務(wù)的辦理人設(shè)置,或者修改一個(gè)服務(wù)任務(wù)中的類名。

接下來(lái)使用之前的請(qǐng)假流程圖,上代碼

代碼

importlombok.extern.slf4j.Slf4j;
importorg.flowable.engine.HistoryService;
importorg.flowable.engine.RepositoryService;
importorg.flowable.engine.RuntimeService;
importorg.flowable.engine.history.HistoricProcessInstance;
importorg.flowable.engine.repository.Deployment;
importorg.flowable.engine.repository.ProcessDefinition;
importorg.flowable.engine.runtime.Execution;
importorg.flowable.engine.runtime.ProcessInstance;
importorg.flowable.idm.api.Group;
importorg.flowable.idm.api.User;
importorg.flowable.task.api.Task;
importorg.flowable.task.api.history.HistoricTaskInstance;
importorg.springframework.beans.factory.annotation.Autowired;

importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;
importjava.util.zip.ZipInputStream;

/**
*TestFlowable
*
*@Author
*@Date:2021/10/1723:35
*@Version1.0
*/
@Slf4j
publicclassTestFlowable{

@Autowired
privateRepositoryServicerepositoryService;

@Autowired
privateRuntimeServiceruntimeService;

@Autowired
privateHistoryServicehistoryService;

@Autowired
privateorg.flowable.engine.TaskServicetaskService;

@Autowired
privateorg.flowable.engine.IdentityServiceidentityService;

publicvoidcreateDeploymentZip(){

/*
*@Date:2021/10/1723:38
*Step1:部署xml(壓縮到zip形式,直接xml需要配置相對(duì)路徑,麻煩,暫不用)
*/
try{
FilezipTemp=newFile("f:/leave_approval.bpmn20.zip");
ZipInputStreamzipInputStream=newZipInputStream(newFileInputStream(zipTemp));
Deploymentdeployment=repositoryService
.createDeployment()
.addZipInputStream(zipInputStream)
.deploy();
log.info("部署成功:{}",deployment.getId());
}catch(FileNotFoundExceptione){
e.printStackTrace();
}

/*
*@Date:2021/10/1723:40
*Step2:查詢部署的流程定義
*/
Listlist=repositoryService.createProcessDefinitionQuery().processDefinitionKey("leave_approval").list();
Listpages=repositoryService.createProcessDefinitionQuery().processDefinitionKey("leave_approval").listPage(1,30);

/*
*@Date:2021/10/1723:40
*Step3:啟動(dòng)流程,創(chuàng)建實(shí)例
*/
StringprocessDefinitionKey="leave_approval";//流程定義的key,對(duì)應(yīng)請(qǐng)假的流程圖
StringbusinessKey="schoolleave";//業(yè)務(wù)代碼,根據(jù)自己的業(yè)務(wù)用
MapvariablesDefinition=newHashMap<>();//流程變量,可以自定義擴(kuò)充
ProcessInstanceprocessInstance=runtimeService.startProcessInstanceByKey(processDefinitionKey,businessKey,variablesDefinition);
log.info("啟動(dòng)成功:{}",processInstance.getId());

/*
*@Date:2021/10/1723:40
*Step4:查詢指定流程所有啟動(dòng)的實(shí)例列表
*列表,或分頁(yè)刪除
*/
Listexecutions=runtimeService.createExecutionQuery().processDefinitionKey("leave_approval").list();
ListexecutionPages=runtimeService.createExecutionQuery().processDefinitionKey("leave_approval").listPage(1,30);
//runtimeService.deleteProcessInstance(processInstanceId,deleteReason);//刪除實(shí)例

/*
*@Date:2021/10/1723:40
*Step5:學(xué)生查詢可以操作的任務(wù),并完成任務(wù)
*/
StringcandidateGroup="stu_group";//候選組xml文件里面的flowable:candidateGroups="stu_group"
ListtaskList=taskService.createTaskQuery().taskCandidateGroup(candidateGroup).orderByTaskCreateTime().desc().list();
for(Tasktask:taskList){
//申領(lǐng)任務(wù)
taskService.claim(task.getId(),"my");
//完成
taskService.complete(task.getId());
}

/*
*@Date:2021/10/1723:40
*Step6:老師查詢可以操作的任務(wù),并完成任務(wù)
*/
StringcandidateGroupTe="te_group";//候選組xml文件里面的flowable:candidateGroups="te_group"
ListtaskListTe=taskService.createTaskQuery().taskCandidateGroup(candidateGroupTe).orderByTaskCreateTime().desc().list();
for(Tasktask:taskListTe){
//申領(lǐng)任務(wù)
taskService.claim(task.getId(),"myte");
//完成
Mapvariables=newHashMap<>();
variables.put("command","agree");//攜帶變量,用于網(wǎng)關(guān)流程的條件判定,這里的條件是同意
taskService.complete(task.getId(),variables);
}

/*
*@Date:2021/10/180:17
*Step7:歷史查詢,因?yàn)橐坏┝鞒虉?zhí)行完畢,活動(dòng)的數(shù)據(jù)都會(huì)被清空,上面查詢的接口都查不到數(shù)據(jù),但是提供歷史查詢接口
*/
//歷史流程實(shí)例
ListhistoricProcessList=historyService.createHistoricProcessInstanceQuery().processDefinitionKey("leave_approval").list();
//歷史任務(wù)
ListhistoricTaskList=historyService.createHistoricTaskInstanceQuery().processDefinitionKey("leave_approval").list();
//實(shí)例歷史變量,任務(wù)歷史變量
//historyService.createHistoricVariableInstanceQuery().processInstanceId(processInstanceId);
//historyService.createHistoricVariableInstanceQuery().taskId(taskId);

//*****************************************************分隔符********************************************************************
//*****************************************************分隔符********************************************************************
//可能還需要的API
//移動(dòng)任務(wù),人為跳轉(zhuǎn)任務(wù)
//runtimeService.createChangeActivityStateBuilder().processInstanceId(processInstanceId)
//.moveActivityIdTo(currentActivityTaskId,newActivityTaskId).changeState();

//如果在數(shù)據(jù)庫(kù)配置了分組和用戶,還會(huì)用到
Listusers=identityService.createUserQuery().list();//用戶查詢,用戶id對(duì)應(yīng)xml里面配置的用戶
Listgroups=identityService.createGroupQuery().list();//分組查詢,分組id對(duì)應(yīng)xml里面配置的分組如stu_group,te_group在表里是id的值

//另外,每個(gè)查詢后面都可以拼條件,內(nèi)置恁多查詢,包括模糊查詢,大小比較都有
}
}

審核編輯:彭靜

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 連接器
    +關(guān)注

    關(guān)注

    98

    文章

    14209

    瀏覽量

    135906
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8447

    瀏覽量

    150720
  • 數(shù)據(jù)庫(kù)
    +關(guān)注

    關(guān)注

    7

    文章

    3752

    瀏覽量

    64229
  • SpringBoot
    +關(guān)注

    關(guān)注

    0

    文章

    173

    瀏覽量

    161

原文標(biāo)題:Spring Boot + flowable 快速實(shí)現(xiàn)工作流

文章出處:【微信號(hào):芋道源碼,微信公眾號(hào):芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    SpringBoot中的Druid介紹

    SpringBoot中Druid數(shù)據(jù)源配置
    發(fā)表于 05-07 09:21

    SpringBoot知識(shí)總結(jié)

    SpringBoot干貨學(xué)習(xí)總結(jié)
    發(fā)表于 08-01 10:40

    怎么學(xué)習(xí)SpringBoot

    SpringBoot學(xué)習(xí)之路(X5)- 整合JPA
    發(fā)表于 06-10 14:52

    怎樣去使用springboot

    怎樣去使用springboot呢?學(xué)習(xí)springboot需要懂得哪些?
    發(fā)表于 10-25 07:13

    SpringBoot應(yīng)用啟動(dòng)運(yùn)行run方法

    什么時(shí)候創(chuàng)建嵌入式的Servlet容器工廠?什么時(shí)候獲取嵌入式的Servlet容器并啟動(dòng)Tomcat;獲取嵌入式的Servlet容器工廠:1)、SpringBoot應(yīng)用啟動(dòng)運(yùn)行run方法2
    發(fā)表于 12-20 06:16

    AP側(cè)中網(wǎng)相關(guān)的PLMN業(yè)務(wù)源碼流程解讀

    搜網(wǎng)流程可以簡(jiǎn)單概括為 PLMN 選擇、小區(qū)搜索、網(wǎng)絡(luò)注冊(cè),而 PLMN 選擇主要在 cp 側(cè)完成,而 PLMN在 OpenHarmony 源碼中(即 AP 側(cè))主要涉及到的業(yè)務(wù)就是搜網(wǎng)模塊中
    發(fā)表于 03-24 15:48

    信令流程業(yè)務(wù)流程

    201業(yè)務(wù)信令流程201業(yè)務(wù)流程201業(yè)務(wù)呼叫流程AD業(yè)務(wù)信令
    發(fā)表于 08-01 08:21 ?22次下載
    信令<b class='flag-5'>流程</b>和<b class='flag-5'>業(yè)務(wù)流程</b>

    使用springboot開發(fā)流程使用的接口完成流程業(yè)務(wù)功能

    進(jìn)入APP.MODELER創(chuàng)建流程,之后可以導(dǎo)出流程到項(xiàng)目中使用,或者配置apache-tomcat-9.0.37webappsflowable-uiWEB-INFclassesflowable-default.properties連接本地?cái)?shù)據(jù)庫(kù)
    的頭像 發(fā)表于 09-08 10:46 ?1156次閱讀

    Spring和Springboot的擴(kuò)展接口總結(jié)

    Spring的核心思想就是容器,當(dāng)容器refresh的時(shí)候,外部看上去風(fēng)平浪靜,其實(shí)內(nèi)部則是一片驚濤駭浪,汪洋一片。Springboot更是封裝了Spring,遵循約定大于配置,加上自動(dòng)裝配的機(jī)制。很多時(shí)候我們只要引用了一個(gè)依賴,幾乎是零配置就能完成一個(gè)
    的頭像 發(fā)表于 10-13 10:17 ?892次閱讀

    深入了解SpringBoot的自動(dòng)配置原理

    通過(guò)這篇文章我們來(lái)深入了解SpringBoot的自動(dòng)配置原理,并分析SpringBoot是如何神不知,鬼不覺(jué)的幫我們做了那么多的事情,讓我們只需要關(guān)心業(yè)務(wù)邏輯開發(fā)就可以了。
    的頭像 發(fā)表于 04-07 11:22 ?927次閱讀
    深入了解<b class='flag-5'>SpringBoot</b>的自動(dòng)配置原理

    什么是 SpringBoot?

    本文從為什么要有 `SpringBoot`,以及 `SpringBoot` 到底方便在哪里開始入手,逐步分析了 `SpringBoot` 自動(dòng)裝配的原理,最后手寫了一個(gè)簡(jiǎn)單的 `start` 組件,通過(guò)實(shí)戰(zhàn)來(lái)體會(huì)了 `
    的頭像 發(fā)表于 04-07 11:28 ?1254次閱讀
    什么是 <b class='flag-5'>SpringBoot</b>?

    SpringBoot的核心注解1

    今天跟大家來(lái)探討下SpringBoot的核心注解@SpringBootApplication以及run方法,理解下springBoot為什么不需要XML,達(dá)到零配置
    的頭像 發(fā)表于 04-07 14:34 ?659次閱讀
    <b class='flag-5'>SpringBoot</b>的核心注解1

    SpringBoot的核心注解2

    今天跟大家來(lái)探討下SpringBoot的核心注解@SpringBootApplication以及run方法,理解下springBoot為什么不需要XML,達(dá)到零配置
    的頭像 發(fā)表于 04-07 14:34 ?1916次閱讀
    <b class='flag-5'>SpringBoot</b>的核心注解2

    Springboot項(xiàng)目的集成以及具體使用及配置

    ? 概念 核心組件 API介紹 Springboot集成 具體業(yè)務(wù)集成 API使用 ? 前言 項(xiàng)目中需要用到工作流引擎來(lái)設(shè)計(jì)部分業(yè)務(wù)流程,框架選型最終選擇了 Camunda7,關(guān)于 Camunda
    的頭像 發(fā)表于 07-03 11:18 ?1454次閱讀
    <b class='flag-5'>Springboot</b>項(xiàng)目的集成以及具體使用及配置

    什么是springBoot業(yè)務(wù)組件化開發(fā)?談?wù)?b class='flag-5'>SpringBoot業(yè)務(wù)組件化

    首先,談一談什么是“springBoot業(yè)務(wù)組件化開發(fā)”,最近一直在開發(fā)一直面臨這一個(gè)問(wèn)題,就是相同的業(yè)務(wù)場(chǎng)景場(chǎng)景在一個(gè)項(xiàng)目中使用了,又需要再另外一個(gè)項(xiàng)目中復(fù)用,一遍又一遍的復(fù)制代碼,然后想將該
    的頭像 發(fā)表于 07-20 11:30 ?803次閱讀
    什么是<b class='flag-5'>springBoot</b><b class='flag-5'>業(yè)務(wù)</b>組件化開發(fā)?談?wù)?b class='flag-5'>SpringBoot</b><b class='flag-5'>業(yè)務(wù)</b>組件化