This commit is contained in:
2025-10-10 10:28:36 +08:00
parent 204dd4781b
commit 71d5aabb84
10 changed files with 323 additions and 1185 deletions

View File

@@ -1,16 +1,11 @@
import { reactive, ref } from 'vue'
import { EventBuilderImpl } from '@/events/impl/EventBuilderImpl'
import type { IEventBuilder } from '@/events/IEventBuilder'
import type {
EventCommunicationEvents,
WindowFormDataUpdateParams
} from './EventCommunicationService'
import type { IEventBuilder, IEventMap, WindowFormDataUpdateParams } from '@/events/IEventBuilder'
import type { ResourceType } from './ResourceService'
// 导入所有服务
import { WindowService } from './WindowService'
import { ResourceService } from './ResourceService'
import { EventCommunicationService } from './EventCommunicationService'
import { ApplicationSandboxEngine } from './ApplicationSandboxEngine'
import { ApplicationLifecycleManager } from './ApplicationLifecycleManager'
import { externalAppDiscovery } from './ExternalAppDiscovery'
@@ -33,7 +28,6 @@ export interface SystemStatus {
servicesStatus: {
windowService: boolean // 窗体服务是否启动
resourceService: boolean // 资源服务是否启动
eventService: boolean // 事件服务是否启动
sandboxEngine: boolean // 沙箱引擎是否启动
lifecycleManager: boolean // 生命周期管理器是否启动
}
@@ -62,10 +56,9 @@ export class SystemServiceIntegration {
private startTime: Date
// 核心服务实例
private eventBus: IEventBuilder<EventCommunicationEvents>
private eventBus: IEventBuilder<any>
private windowService!: WindowService
private resourceService!: ResourceService
private eventService!: EventCommunicationService
private sandboxEngine!: ApplicationSandboxEngine
private lifecycleManager!: ApplicationLifecycleManager
@@ -76,7 +69,6 @@ export class SystemServiceIntegration {
servicesStatus: {
windowService: false,
resourceService: false,
eventService: false,
sandboxEngine: false,
lifecycleManager: false
},
@@ -96,7 +88,7 @@ export class SystemServiceIntegration {
}
this.startTime = new Date()
this.eventBus = new EventBuilderImpl<EventCommunicationEvents>()
this.eventBus = new EventBuilderImpl<any>()
this.setupGlobalErrorHandling()
}
@@ -104,7 +96,7 @@ export class SystemServiceIntegration {
/**
* 初始化系统服务
*/
async initialize(): Promise<void> {
private async initialize(): Promise<void> {
if (this.initialized.value) {
throw new Error('系统服务已初始化')
}
@@ -138,12 +130,6 @@ export class SystemServiceIntegration {
this.systemStatus.running = true
console.log('系统服务初始化完成')
// 发送系统就绪事件
this.eventService.sendMessage('system', 'system-ready', {
timestamp: new Date(),
services: Object.keys(this.systemStatus.servicesStatus)
})
} catch (error) {
console.error('系统服务初始化失败:', error)
this.systemStatus.lastError = error instanceof Error ? error.message : String(error)
@@ -174,14 +160,6 @@ export class SystemServiceIntegration {
return this.resourceService
}
/**
* 获取事件服务
*/
getEventService(): EventCommunicationService {
this.checkInitialized()
return this.eventService
}
/**
* 获取沙箱引擎
*/
@@ -243,7 +221,7 @@ export class SystemServiceIntegration {
/**
* 关闭系统服务
*/
async shutdown(): Promise<void> {
private async shutdown(): Promise<void> {
console.log('关闭系统服务...')
this.running.value = false
@@ -277,10 +255,6 @@ export class SystemServiceIntegration {
this.sandboxEngine.destroy()
}
if (this.eventService) {
this.eventService.destroy()
}
if (this.windowService) {
// 关闭所有窗体
const windows = this.windowService.getAllWindows()
@@ -307,11 +281,6 @@ export class SystemServiceIntegration {
this.resourceService = new ResourceService(this.eventBus)
this.systemStatus.servicesStatus.resourceService = true
// 2. 初始化事件通信服务
console.log('初始化事件通信服务...')
this.eventService = new EventCommunicationService(this.eventBus)
this.systemStatus.servicesStatus.eventService = true
// 3. 初始化窗体服务
console.log('初始化窗体服务...')
this.windowService = new WindowService(this.eventBus)
@@ -319,7 +288,7 @@ export class SystemServiceIntegration {
// 4. 初始化沙箱引擎
console.log('初始化沙箱引擎...')
this.sandboxEngine = new ApplicationSandboxEngine(this.resourceService, this.eventService)
this.sandboxEngine = new ApplicationSandboxEngine(this.resourceService)
this.systemStatus.servicesStatus.sandboxEngine = true
// 5. 初始化生命周期管理器
@@ -327,7 +296,6 @@ export class SystemServiceIntegration {
this.lifecycleManager = new ApplicationLifecycleManager(
this.windowService,
this.resourceService,
this.eventService,
this.sandboxEngine
)
this.systemStatus.servicesStatus.lifecycleManager = true
@@ -337,16 +305,6 @@ export class SystemServiceIntegration {
* 设置服务间通信
*/
private setupServiceCommunication(): void {
// 监听应用生命周期事件
this.eventService.subscribe('system', 'app-lifecycle', (message) => {
this.debugLog('[AppLifecycle] 应用生命周期事件:', message.payload)
})
// 监听窗口状态变化事件
this.eventService.subscribe('system', 'window-state-change', (message) => {
this.debugLog('[WindowState] 窗口状态变化消息已处理:', message.payload)
})
// 监听窗体状态变化(来自 WindowService 的 onStateChange 事件)
this.eventBus.addEventListener(
'onWindowStateChanged',
@@ -354,12 +312,6 @@ export class SystemServiceIntegration {
console.log(
`[SystemIntegration] 接收到窗体状态变化事件: ${windowId} ${oldState} -> ${newState}`
)
this.eventService.sendMessage('system', 'window-state-change', {
windowId,
newState,
oldState
})
console.log(`[SystemIntegration] 已发送 window-state-change 消息到事件通信服务`)
}
)
@@ -384,13 +336,11 @@ export class SystemServiceIntegration {
// 监听窗体数据更新事件
this.eventBus.addEventListener('onWindowFormDataUpdate', (data: WindowFormDataUpdateParams) => {
console.log(`[SystemIntegration] 接收到窗体数据更新事件:`, data)
this.eventService.sendMessage('system', 'window-form-data-update', data)
})
// 监听窗体调整尺寸开始事件
this.eventBus.addEventListener('onWindowFormResizeStart', (windowId: string) => {
console.log(`[SystemIntegration] 接收到窗体调整尺寸开始事件: ${windowId}`)
this.eventService.sendMessage('system', 'window-form-resize-start', { windowId })
})
// 监听窗体调整尺寸过程中事件
@@ -401,18 +351,12 @@ export class SystemServiceIntegration {
width,
height
})
this.eventService.sendMessage('system', 'window-form-resizing', {
windowId,
width,
height
})
}
)
// 监听窗体调整尺寸结束事件
this.eventBus.addEventListener('onWindowFormResizeEnd', (windowId: string) => {
console.log(`[SystemIntegration] 接收到窗体调整尺寸结束事件: ${windowId}`)
this.eventService.sendMessage('system', 'window-form-resize-end', { windowId })
})
}
@@ -677,35 +621,7 @@ export class SystemServiceIntegration {
* 执行事件相关方法
*/
private async executeEventMethod(action: string, data: any, appId: string): Promise<any> {
switch (action) {
case 'emit':
return this.eventService.sendMessage(appId, data.channel, data.data)
case 'on':
return this.eventService.subscribe(appId, data.channel, (message) => {
// 发送事件到应用
const app = this.lifecycleManager.getApp(appId)
if (app?.sandboxId) {
this.sandboxEngine.sendMessage(app.sandboxId, {
type: 'system:event',
subscriptionId: data.subscriptionId,
message
})
}
})
case 'off':
return this.eventService.unsubscribe(data.subscriptionId)
case 'broadcast':
return this.eventService.broadcast(appId, data.channel, data.data)
case 'sendTo':
return this.eventService.sendCrossAppMessage(appId, data.targetAppId, data.data)
default:
throw new Error(`未知的事件操作: ${action}`)
}
throw new Error('事件服务已被移除')
}
/**
@@ -794,11 +710,16 @@ export class SystemServiceIntegration {
* 开始自动清理
*/
private startAutoCleanup(): void {
if (!this.config.cleanupInterval) return
this.cleanupInterval = setInterval(() => {
this.debugLog('执行自动清理...')
// 清理事件服务
this.eventService.cleanup()
// 移除资源服务清理(方法不存在)
// this.resourceService.cleanup()
// 移除事件服务清理
// this.eventService.cleanup()
// 清理沙箱引擎缓存
// this.sandboxEngine.cleanup()