From 55161559402eac3f820fa7dacfe47eceef6db899 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=93=86=E5=95=A6=E5=A5=BD=E6=A2=A6?= <530353222@qq.com>
Date: Fri, 3 Mar 2023 17:39:56 +0800
Subject: [PATCH] job
---
electron/controller/example.js | 15 ++++++
electron/jobs/example/hello.js | 5 ++
electron/jobs/example/index.js | 41 ---------------
electron/jobs/example/test.js | 40 ---------------
electron/jobs/example/timer.js | 46 +++++++++++++++++
electron/preload/index.js | 4 +-
frontend/src/api/main.js | 1 +
frontend/src/utils/message.js | 3 ++
frontend/src/views/base/jobs/Index.vue | 70 ++++++++++++++++++++++++++
package.json | 2 +-
10 files changed, 143 insertions(+), 84 deletions(-)
create mode 100644 electron/jobs/example/hello.js
delete mode 100644 electron/jobs/example/index.js
delete mode 100644 electron/jobs/example/test.js
create mode 100644 electron/jobs/example/timer.js
create mode 100644 frontend/src/utils/message.js
create mode 100644 frontend/src/views/base/jobs/Index.vue
diff --git a/electron/controller/example.js b/electron/controller/example.js
index a5b6b68..bce2eb6 100644
--- a/electron/controller/example.js
+++ b/electron/controller/example.js
@@ -677,6 +677,21 @@ class ExampleController extends Controller {
return data;
}
+ /**
+ * 任务
+ */
+ someJob (args) {
+ let jobId = args.id;
+ if (args.type == 'timer') {
+ let myjob = new ChildJob();
+ myjob.exec('./jobs/example/timer', {jobId});
+
+ myjob.on('job-timer', (data) => {
+ Log.info('from TimerJob data:', data);
+ })
+ }
+ }
+
/**
* 测试接口
*/
diff --git a/electron/jobs/example/hello.js b/electron/jobs/example/hello.js
new file mode 100644
index 0000000..48624bd
--- /dev/null
+++ b/electron/jobs/example/hello.js
@@ -0,0 +1,5 @@
+const Log = require('ee-core/module/log');
+
+exports.welcome = function () {
+ Log.info('[child-process] [jobs/example/hello] welcome ! ');
+}
\ No newline at end of file
diff --git a/electron/jobs/example/index.js b/electron/jobs/example/index.js
deleted file mode 100644
index 2dac173..0000000
--- a/electron/jobs/example/index.js
+++ /dev/null
@@ -1,41 +0,0 @@
-const Job = require('ee-core/module/jobs/baseJobClass');
-const Loader = require('ee-core/module/loader');
-const Log = require('ee-core/module/log');
-const Ps = require('ee-core/module/ps');
-const test = Loader.requireJobsModule('./example/test');
-
-/**
- * 示例服务
- * @class
- */
-class ExampleJob extends Job {
-
- constructor(params) {
- super();
- this.params = params;
- }
-
- /**
- * Execute the job
- */
- async handle () {
- Log.info("[child-process] job params: ", this.params);
- // setInterval(function() {
- // console.log('ddddd')
- // }, 1000);
-
- //test.hello();
- //test.utilsMod();
-
- setTimeout(function(){
- test.hello();
- }, 3000)
-
- setTimeout(function(){
- Ps.exit(1);
- }, 10000)
- }
-}
-
-ExampleJob.toString = () => '[class ExampleJob]';
-module.exports = ExampleJob;
diff --git a/electron/jobs/example/test.js b/electron/jobs/example/test.js
deleted file mode 100644
index e06e965..0000000
--- a/electron/jobs/example/test.js
+++ /dev/null
@@ -1,40 +0,0 @@
-const Log = require('ee-core/module/log');
-const Utils = require('ee-core/module/utils');
-const Ps = require('ee-core/module/ps');
-
-exports.hello = function () {
- Log.info('[child-process] [jobs/test] hello -------- ');
-}
-
-exports.utilsMod = function () {
- let utilsApis = {
- getBaseDir: Ps.getBaseDir(),
- getEnv: Ps.getEnv(),
- isDev: Ps.isDev(),
- isRenderer: Ps.isRenderer(),
- isMain: Ps.isMain(),
- isForkedChild: Ps.isForkedChild(),
- getHomeDir: Ps.getHomeDir(),
- getStorageDir: Ps.getStorageDir(),
- getLogDir: Ps.getLogDir(),
- getRootDir: Ps.getRootDir(),
- getBaseDir: Ps.getBaseDir(),
- getAppUserDataDir: Ps.getAppUserDataDir(),
- getHomeDir: Ps.getHomeDir(),
- getUserHomeDir: Ps.getUserHomeDir(),
- getMainPort: Ps.getMainPort(),
- getSocketPort: Ps.getSocketPort(),
- getHttpPort: Ps.getHttpPort(),
- getExecDir: Ps.getExecDir(),
- getPackage: Utils.getPackage(),
- getEeConfig: Utils.getEeConfig(),
- getAppVersion: Utils.getAppVersion(),
- getAddonConfig: Utils.getAddonConfig(),
- getMainServerConfig: Utils.getMainServerConfig(),
- getHttpServerConfig: Utils.getHttpServerConfig(),
- getSocketServerConfig: Utils.getSocketServerConfig(),
- getSocketChannel: Utils.getSocketChannel(),
- getExtraResourcesDir: Ps.getExtraResourcesDir(),
- }
- Log.info('[child-process] [jobs/test] Utils -------- ', utilsApis);
-}
\ No newline at end of file
diff --git a/electron/jobs/example/timer.js b/electron/jobs/example/timer.js
new file mode 100644
index 0000000..76b7fcb
--- /dev/null
+++ b/electron/jobs/example/timer.js
@@ -0,0 +1,46 @@
+const Job = require('ee-core/module/jobs/baseJobClass');
+const Loader = require('ee-core/module/loader');
+const Log = require('ee-core/module/log');
+const Ps = require('ee-core/module/ps');
+const Message = require('ee-core/module/message');
+const Hello = Loader.requireJobsModule('./example/hello');
+
+/**
+ * example - TimerJob
+ * @class
+ */
+class TimerJob extends Job {
+
+ constructor(params) {
+ super();
+ this.params = params;
+ }
+
+ /**
+ * handle()方法是必要的,且会被自动调用
+ */
+ async handle () {
+ Log.info("[child-process] TimerJob params: ", this.params);
+
+ // 模拟计时器任务,执行10秒
+ let childMessage = Message.childMessage;
+ let eventName = 'job-timer';
+ let number = 0;
+ let jobId = this.params.jobId;
+ setInterval(function() {
+ Log.info("[child-process] TimerJob number: ", number);
+ Hello.welcome();
+
+ childMessage.sendToMain(eventName, {number, jobId});
+ number++;
+ }, 1000);
+
+ // 任务完成后,必须调用 Ps.exit() 方法,让进程退出,否则会常驻内存
+ setTimeout(function(){
+ Ps.exit(1);
+ }, 15 * 1000)
+ }
+}
+
+TimerJob.toString = () => '[class TimerJob]';
+module.exports = TimerJob;
diff --git a/electron/preload/index.js b/electron/preload/index.js
index d3960c6..9f22970 100644
--- a/electron/preload/index.js
+++ b/electron/preload/index.js
@@ -21,6 +21,6 @@ module.exports = async (app) => {
awakenAddon.create();
autoUpdaterAddon.create();
- let myjob = new ChildJob();
- myjob.exec('./jobs/example/index');
+ // let myjob = new ChildJob();
+ // myjob.exec('./jobs/example/index');
}
\ No newline at end of file
diff --git a/frontend/src/api/main.js b/frontend/src/api/main.js
index 737248e..aaecdf9 100644
--- a/frontend/src/api/main.js
+++ b/frontend/src/api/main.js
@@ -34,6 +34,7 @@ const ipcApiRoute = {
getWCid: 'controller.example.getWCid',
startJavaServer: 'controller.example.startJavaServer',
closeJavaServer: 'controller.example.closeJavaServer',
+ someJob: 'controller.example.someJob',
hello: 'controller.example.hello',
}
diff --git a/frontend/src/utils/message.js b/frontend/src/utils/message.js
new file mode 100644
index 0000000..f2aba39
--- /dev/null
+++ b/frontend/src/utils/message.js
@@ -0,0 +1,3 @@
+const { ipcRenderer: ipc } = (window.require && window.require('electron')) || window.electron || {}
+
+export default ipc
diff --git a/frontend/src/views/base/jobs/Index.vue b/frontend/src/views/base/jobs/Index.vue
new file mode 100644
index 0000000..3919c32
--- /dev/null
+++ b/frontend/src/views/base/jobs/Index.vue
@@ -0,0 +1,70 @@
+
+
+
+
+ 1. 任务
+
+
+
+
+ 执行任务1
+ 进度:{{ message1 }}
+
+
+
+ 执行任务2
+ 进度:{{ message2 }}
+
+
+
+
+
+
diff --git a/package.json b/package.json
index 8c89f34..598217a 100644
--- a/package.json
+++ b/package.json
@@ -111,7 +111,7 @@
"dependencies": {
"better-sqlite3": "^7.6.0",
"dayjs": "^1.10.7",
- "ee-core": "^1.5.0",
+ "ee-core": "^2.0.0",
"electron-is": "^3.0.0",
"electron-updater": "^5.3.0",
"lodash": "^4.17.21"