From 5732dd4c93e1e3fc77f5eea07d6f9d235d6966f0 Mon Sep 17 00:00:00 2001 From: Harrison Date: Wed, 15 Nov 2023 20:04:54 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20REPORT-106669=20=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E5=9F=8B=E7=82=B9=E8=A1=A5=E5=85=85=20=E3=80=90=E8=BF=9C?= =?UTF-8?q?=E7=A8=8B=E9=83=A8=E5=88=86=E5=9F=8B=E7=82=B9=E8=A1=A5=E5=85=85?= =?UTF-8?q?=E3=80=82=E3=80=91=20-=20=E6=B7=BB=E5=8A=A0=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E8=BF=87=E7=A8=8B=E3=80=81=E5=88=87=E6=8D=A2=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=20-=20=E6=A8=A1=E5=9D=97=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E7=BB=86=E5=8C=96=20-=20=E6=8F=90=E4=BE=9B?= =?UTF-8?q?=20PerformancePoint=20=E4=BD=9C=E4=B8=BA=E6=80=A7=E8=83=BD?= =?UTF-8?q?=E8=AF=8A=E6=96=AD=E8=BE=85=E5=8A=A9=E7=B1=BB=E3=80=82=E6=8F=90?= =?UTF-8?q?=E4=BE=9B=20PerformancePointTest=20=E4=BD=9C=E4=B8=BA=20DEMO?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/EnvChangeEntrance.java | 30 +++++++++++++++---- .../module/DesignerWorkspaceActivator.java | 27 +++++++++++++++++ 2 files changed, 51 insertions(+), 6 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java b/designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java index 1f3055d40..090a0bd63 100644 --- a/designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java +++ b/designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java @@ -1,9 +1,6 @@ package com.fr.design; import com.fr.common.report.ReportState; -import com.fr.design.env.processor.RemoteDesignerWorkspaceInfoProcessor; -import com.fr.design.mainframe.manager.clip.TemplateTreeClipboard; -import com.fr.design.plugin.remind.PluginErrorDesignReminder; import com.fr.design.data.DesignTableDataManager; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.DialogActionAdapter; @@ -14,13 +11,16 @@ import com.fr.design.env.DesignerWorkspaceInfoContext; import com.fr.design.env.DesignerWorkspaceType; import com.fr.design.env.RemoteDesignerWorkspaceInfo; import com.fr.design.env.RemoteWorkspace; +import com.fr.design.env.processor.RemoteDesignerWorkspaceInfoProcessor; import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.file.SaveSomeTemplatePane; import com.fr.design.file.TemplateTreePane; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.JTemplate; +import com.fr.design.mainframe.manager.clip.TemplateTreeClipboard; import com.fr.design.notification.NotificationCenter; +import com.fr.design.plugin.remind.PluginErrorDesignReminder; import com.fr.design.utils.DesignUtils; import com.fr.design.versioncheck.VersionCheckUtils; import com.fr.env.EnvListPane; @@ -31,6 +31,7 @@ import com.fr.invoke.Reflect; import com.fr.json.JSONArray; import com.fr.locale.InterProviderFactory; import com.fr.log.FineLoggerFactory; +import com.fr.performance.profile.PerformancePoint; import com.fr.process.ProcessEventPipe; import com.fr.process.engine.core.CarryMessageEvent; import com.fr.process.engine.core.FineProcessContext; @@ -41,12 +42,14 @@ import com.fr.start.server.ServerTray; import com.fr.workspace.WorkContext; import com.fr.workspace.WorkContextCallback; import com.fr.workspace.Workspace; +import com.fr.workspace.WorkspaceSwitchProcess; import com.fr.workspace.base.WorkspaceAPI; import com.fr.workspace.connect.WorkspaceConnectionInfo; import com.fr.workspace.engine.base.FineObjectPool; import com.fr.workspace.engine.channel.http.FunctionalHttpRequest; import com.fr.workspace.engine.exception.WorkspaceConnectionException; import com.fr.workspace.engine.rpc.WorkspaceProxyPool; +import static javax.swing.JOptionPane.QUESTION_MESSAGE; import javax.swing.JOptionPane; import javax.swing.SwingUtilities; @@ -58,12 +61,11 @@ import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Optional; import java.util.Set; -import java.util.HashSet; - -import static javax.swing.JOptionPane.QUESTION_MESSAGE; public class EnvChangeEntrance { private static final String BRANCH_TAG = "#"; @@ -132,6 +134,9 @@ public class EnvChangeEntrance { * @return 是否成功 */ private boolean switch2Env(final String envName, PopTipStrategy strategy) { + + PerformancePoint performancePoint = PerformancePoint.create(); + DesignerEnvManager envManager = DesignerEnvManager.getEnvManager(); DesignerWorkspaceInfo selectedEnv = customUserName(envManager.getWorkspaceInfo(envName)); DesignerWorkspaceInfoContext.setWorkspaceInfo(selectedEnv); @@ -165,6 +170,8 @@ public class EnvChangeEntrance { } catch (Exception exception) { // 失败的处理 WorkspaceExceptionHandler.getInstance().handleInSwitch(exception, selectedEnv); + // 记录切换耗时 + recordSwitchElapsed(performancePoint); return false; } TemplateTreePane.getInstance().refreshDockingView(); @@ -175,9 +182,20 @@ public class EnvChangeEntrance { NotificationCenter.getInstance().clearAllNotifications(); //切换环境后,清空粘贴板里面的内容 TemplateTreeClipboard.getInstance().reset(); + // 记录切换耗时 + recordSwitchElapsed(performancePoint); return true; } + private static void recordSwitchElapsed(PerformancePoint performancePoint) { + + performancePoint.end(elapsed -> { + WorkspaceSwitchProcess process = WorkContext.getSwitcher().getProgress(); + Optional.ofNullable(process) + .ifPresent((e) -> e.recordSwitchElapsed(elapsed)); + }); + } + /** * 切换到其他环境 * diff --git a/designer-realize/src/main/java/com/fr/start/module/DesignerWorkspaceActivator.java b/designer-realize/src/main/java/com/fr/start/module/DesignerWorkspaceActivator.java index 858eca497..e8e2e0f12 100644 --- a/designer-realize/src/main/java/com/fr/start/module/DesignerWorkspaceActivator.java +++ b/designer-realize/src/main/java/com/fr/start/module/DesignerWorkspaceActivator.java @@ -6,10 +6,15 @@ import com.fr.design.file.HistoryTemplateListCache; import com.fr.event.Event; import com.fr.event.Listener; import com.fr.module.Activator; +import com.fr.module.ModuleContext; +import com.fr.module.engine.FineModule; import com.fr.start.server.FineEmbedServer; +import com.fr.workspace.WorkContext; import com.fr.workspace.Workspace; import com.fr.workspace.WorkspaceEvent; +import com.fr.workspace.WorkspaceSwitchProcess; +import java.util.Optional; import java.util.concurrent.ExecutorService; /** @@ -35,6 +40,17 @@ public class DesignerWorkspaceActivator extends Activator { public void on(Event event, Workspace current) { stopSub(EnvBasedModule.class); + recordModuleStop(); + } + + private void recordModuleStop() { + + WorkspaceSwitchProcess process = WorkContext.getSwitcher().getProgress(); + Optional.ofNullable(process) + .ifPresent((e) -> e.recordModuleStopUsed(() -> { + FineModule module = (FineModule) ModuleContext.getModule(EnvBasedModule.class); + return module.profileStop(); + })); } }); /*切换环境后,重新启动所有相关模块,最先执行*/ @@ -44,6 +60,17 @@ public class DesignerWorkspaceActivator extends Activator { public void on(Event event, Workspace current) { startSub(EnvBasedModule.class); + recordModuleStart(); + } + + private void recordModuleStart() { + + WorkspaceSwitchProcess process = WorkContext.getSwitcher().getProgress(); + Optional.ofNullable(process) + .ifPresent((e) -> e.recordModuleStartUsed(() -> { + FineModule module = (FineModule) ModuleContext.getModule(EnvBasedModule.class); + return module.profile(); + })); } }); /*切换环境前,存储一下打开的所有文件对象,要先于 关闭相关模块部分 被触发*/