開源機器學習平臺tipdm
TipDM建模平臺
tipdm開源的python機器學習建模平臺,使用者通過拖拉就可以實現模型開發。
專案結構
backend :為java後臺服務程式碼
frontedn :為vue js前端程式碼
mock-oauth-server:為java認證服務程式碼
主要分析backend後臺服務程式碼,典型的java spring mvc web專案,專案結構如下:
framework-common:公共程式碼,主要為工具類,spring相關公用類
framework-model: 實體類
framework-persist:持久層
framework-service:service層,就兩個資料庫操作相關的service 介面和抽象類
tipdm-server: 服務核心
本次主要介紹下tipdm-server 模型執行程式碼實現
模型執行入庫在ProjectController類中的execute方法,邏輯是驗證許可權,載入流程檔案,執行流程,主要程式碼:
WorkFlow workFlow = new WorkFlow(executionId, tokenModel.getUsername(), content); //解析工作流檔案,建立工作流物件
String workFlowId = workFlowScheduler.execute(workFlow);//執行工作流
進入 workFlowScheduler.execute(workFlow)方法,主要程式碼:
WorkFlowDexecutor dexecutor = new WorkFlowDexecutor(accessToken, flow, scheduler);//初始化dexecutor-core框架,構建流程執行圖
//啟動一個執行緒監聽流程
WorkFlowHandler workFlowHandler = new WorkFlowHandler(workFlowId, scheduler, dexecutor, semaphore);
workFlowHandler.start();//執行流程
這裡需要對dexecutor-core框架有些瞭解,dexecutor-core主要為了使使用者可以簡單快速構建執行依賴任務。
WorkFlowHandler 是個執行緒類繼承了Thread,其run方法:
@Override
public void run() {
this.dexecutor.execute(new ExecutionConfig().nonTerminating()); //通過dexecutor-core執行依賴任務
release();
}
實際最終執行任務的是JobProvider類中的provideTask方法,主要是通過構建quartz定時任務WorkFlowJobBean去執行,WorkFlowJobBean中的executeInternal方法執行IAlgorithm.run執行演算法邏輯.