verteilen-core 1.2.22 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/interface/base.d.ts +26 -12
  2. package/dist/interface/enum.d.ts +12 -5
  3. package/dist/interface/enum.js +14 -6
  4. package/dist/interface/struct.d.ts +9 -1
  5. package/dist/interface.d.ts +1 -1
  6. package/dist/interface.js +1 -1
  7. package/dist/script/execute/base.d.ts +8 -6
  8. package/dist/script/execute/base.js +21 -8
  9. package/dist/script/execute/index.d.ts +8 -0
  10. package/dist/script/execute/index.js +24 -0
  11. package/dist/script/execute/region_job.d.ts +9 -1
  12. package/dist/script/execute/region_job.js +62 -2
  13. package/dist/script/execute/region_project.d.ts +3 -3
  14. package/dist/script/execute/region_project.js +31 -6
  15. package/dist/script/execute/region_subtask.d.ts +8 -1
  16. package/dist/script/execute/region_subtask.js +37 -2
  17. package/dist/script/execute/region_task.d.ts +32 -4
  18. package/dist/script/execute/region_task.js +270 -8
  19. package/dist/script/execute/runner.d.ts +1 -10
  20. package/dist/script/execute/runner.js +0 -242
  21. package/dist/script/execute_manager.js +55 -53
  22. package/dist/server/detail.js +3 -3
  23. package/dist/server/io.d.ts +5 -1
  24. package/dist/server/io.js +13 -5
  25. package/dist/server/module/project.d.ts +14 -0
  26. package/dist/server/module/project.js +64 -0
  27. package/dist/server/module/service.d.ts +5 -0
  28. package/dist/server/module/service.js +10 -0
  29. package/dist/server/server.d.ts +2 -0
  30. package/dist/server/server.js +7 -0
  31. package/dist/server.d.ts +2 -0
  32. package/dist/server.js +2 -0
  33. package/dist/util/console_handle.js +8 -8
  34. package/dist/util/log_handle.js +4 -4
  35. package/package.json +1 -1
  36. package/src/interface/base.ts +104 -31
  37. package/src/interface/enum.ts +6 -2
  38. package/src/interface/struct.ts +11 -1
  39. package/src/interface.ts +1 -1
  40. package/src/script/execute/base.ts +45 -29
  41. package/src/script/execute/feedback.ts +1 -3
  42. package/src/script/execute/region_job.ts +66 -2
  43. package/src/script/execute/region_project.ts +42 -5
  44. package/src/script/execute/region_subtask.ts +36 -2
  45. package/src/script/execute/region_task.ts +348 -9
  46. package/src/script/execute/runner.ts +1 -306
  47. package/src/script/execute_manager.ts +61 -61
  48. package/src/server/detail.ts +8 -3
  49. package/src/server/io.ts +29 -6
  50. package/src/server/module/project.ts +82 -0
  51. package/src/server/module/service.ts +14 -0
  52. package/src/server/plugin.ts +9 -0
  53. package/src/server/server.ts +34 -1
  54. package/src/server.ts +3 -1
  55. package/src/util/console_handle.ts +8 -8
  56. package/src/util/log_handle.ts +4 -4
  57. /package/src/script/execute/{interface.ts → index.ts} +0 -0
@@ -1,8 +1,12 @@
1
- import { DataType, DataTypeBase } from "./enum";
1
+ import { DataType, DataTypeBase, ServiceMode } from "./enum";
2
2
  import { ACLType, LocalPermission as LocalPermission } from "./server";
3
+ import { TaskLogic } from "./struct";
3
4
  export interface DatabaseConfigTrigger {
4
5
  types: Array<DataTypeBase>;
5
6
  }
7
+ export interface DataHeader {
8
+ uuid: string;
9
+ }
6
10
  export interface DatabaseContainer {
7
11
  name: string;
8
12
  meta?: any;
@@ -17,17 +21,25 @@ export interface Property {
17
21
  expression: string;
18
22
  deep?: number;
19
23
  }
20
- export interface Database {
21
- uuid: string;
24
+ export interface Service extends DataHeader {
25
+ title: string;
26
+ description: string;
27
+ meta: any;
28
+ type: ServiceMode;
29
+ timer: string;
30
+ project: string;
31
+ permission?: LocalPermission;
32
+ acl?: ACLType;
33
+ }
34
+ export interface Database extends DataHeader {
22
35
  title: string;
23
36
  canWrite: boolean;
24
37
  containers: Array<DatabaseContainer>;
25
38
  permission?: LocalPermission;
26
39
  }
27
- export interface Job {
40
+ export interface Job extends DataHeader {
28
41
  index?: number;
29
42
  meta?: any;
30
- uuid: string;
31
43
  runtime_uuid?: string;
32
44
  category: number;
33
45
  type: number;
@@ -37,9 +49,9 @@ export interface Job {
37
49
  boolean_args: Array<boolean>;
38
50
  id_args: Array<boolean>;
39
51
  permission?: LocalPermission;
52
+ acl?: ACLType;
40
53
  }
41
- export interface Task {
42
- uuid: string;
54
+ export interface Task extends DataHeader {
43
55
  title: string;
44
56
  description: string;
45
57
  setupjob: boolean;
@@ -48,23 +60,25 @@ export interface Task {
48
60
  multi: boolean;
49
61
  multiKey: string;
50
62
  properties: Array<Property>;
63
+ logic?: TaskLogic;
51
64
  jobs: Array<Job>;
65
+ jobs_uuid: Array<string>;
52
66
  permission?: LocalPermission;
67
+ acl?: ACLType;
53
68
  }
54
- export interface Project {
69
+ export interface Project extends DataHeader {
55
70
  owner?: string;
56
- uuid: string;
57
71
  title: string;
58
72
  description?: string;
59
73
  database_uuid: string;
60
74
  database?: Database;
61
- task: Array<Task>;
75
+ tasks: Array<Task>;
76
+ tasks_uuid: Array<string>;
62
77
  permission?: LocalPermission;
63
78
  acl?: ACLType;
64
79
  }
65
- export interface Node {
80
+ export interface Node extends DataHeader {
66
81
  cluster: boolean;
67
- uuid: string;
68
82
  parent?: string;
69
83
  url: string;
70
84
  permission?: LocalPermission;
@@ -1,3 +1,8 @@
1
+ export declare enum TaskLogicType {
2
+ GROUP = 0,
3
+ ADD = 1,
4
+ OR = 2
5
+ }
1
6
  export declare enum SocketState {
2
7
  CONNECTING = 0,
3
8
  OPEN = 1,
@@ -95,11 +100,13 @@ export declare enum RenderUpdateType {
95
100
  }
96
101
  export declare enum RecordType {
97
102
  PROJECT = 0,
98
- Database = 1,
99
- NODE = 2,
100
- LOG = 3,
101
- LIB = 4,
102
- USER = 5
103
+ TASK = 1,
104
+ JOB = 2,
105
+ DATABASE = 3,
106
+ NODE = 4,
107
+ LOG = 5,
108
+ LIB = 6,
109
+ USER = 7
103
110
  }
104
111
  export declare enum JavascriptLib {
105
112
  ALL = 127,
@@ -1,6 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DatabaseTemplateText = exports.ProjectTemplateText = exports.JobType2Text = exports.JobTypeText = exports.JobResultText = exports.ConnectionText = exports.JobCategoryText = exports.ExecuteStateText = exports.DataTypeText = exports.ServiceMode = exports.JavascriptLib = exports.RecordType = exports.RenderUpdateType = exports.ExecuteState = exports.DatabaseTemplate = exports.ProjectTemplate = exports.JobType2 = exports.JobType = exports.ConditionResult = exports.JobCategory = exports.FrontendUpdate = exports.ResourceType = exports.DataTypeBase = exports.BackendType = exports.DataType = exports.SocketState = void 0;
3
+ exports.DatabaseTemplateText = exports.ProjectTemplateText = exports.JobType2Text = exports.JobTypeText = exports.JobResultText = exports.ConnectionText = exports.JobCategoryText = exports.ExecuteStateText = exports.DataTypeText = exports.ServiceMode = exports.JavascriptLib = exports.RecordType = exports.RenderUpdateType = exports.ExecuteState = exports.DatabaseTemplate = exports.ProjectTemplate = exports.JobType2 = exports.JobType = exports.ConditionResult = exports.JobCategory = exports.FrontendUpdate = exports.ResourceType = exports.DataTypeBase = exports.BackendType = exports.DataType = exports.SocketState = exports.TaskLogicType = void 0;
4
+ var TaskLogicType;
5
+ (function (TaskLogicType) {
6
+ TaskLogicType[TaskLogicType["GROUP"] = 0] = "GROUP";
7
+ TaskLogicType[TaskLogicType["ADD"] = 1] = "ADD";
8
+ TaskLogicType[TaskLogicType["OR"] = 2] = "OR";
9
+ })(TaskLogicType || (exports.TaskLogicType = TaskLogicType = {}));
4
10
  var SocketState;
5
11
  (function (SocketState) {
6
12
  SocketState[SocketState["CONNECTING"] = 0] = "CONNECTING";
@@ -113,11 +119,13 @@ var RenderUpdateType;
113
119
  var RecordType;
114
120
  (function (RecordType) {
115
121
  RecordType[RecordType["PROJECT"] = 0] = "PROJECT";
116
- RecordType[RecordType["Database"] = 1] = "Database";
117
- RecordType[RecordType["NODE"] = 2] = "NODE";
118
- RecordType[RecordType["LOG"] = 3] = "LOG";
119
- RecordType[RecordType["LIB"] = 4] = "LIB";
120
- RecordType[RecordType["USER"] = 5] = "USER";
122
+ RecordType[RecordType["TASK"] = 1] = "TASK";
123
+ RecordType[RecordType["JOB"] = 2] = "JOB";
124
+ RecordType[RecordType["DATABASE"] = 3] = "DATABASE";
125
+ RecordType[RecordType["NODE"] = 4] = "NODE";
126
+ RecordType[RecordType["LOG"] = 5] = "LOG";
127
+ RecordType[RecordType["LIB"] = 6] = "LIB";
128
+ RecordType[RecordType["USER"] = 7] = "USER";
121
129
  })(RecordType || (exports.RecordType = RecordType = {}));
122
130
  var JavascriptLib;
123
131
  (function (JavascriptLib) {
@@ -1,6 +1,6 @@
1
1
  import { DatabaseContainer, Project } from "./base";
2
2
  import ws from 'ws';
3
- import { ServiceMode } from "./enum";
3
+ import { ServiceMode, TaskLogicType } from "./enum";
4
4
  import { ACLType, LocalPermission } from "./server";
5
5
  type ProjectCall = (p: Project) => Project;
6
6
  type DatabaseCall = () => Array<DatabaseContainer>;
@@ -186,4 +186,12 @@ export interface BuildinAssets {
186
186
  export interface ServiceConfig {
187
187
  mode: ServiceMode;
188
188
  }
189
+ export interface TaskLogicUnit {
190
+ type: TaskLogicType;
191
+ job: string;
192
+ children: Array<TaskLogicUnit>;
193
+ }
194
+ export interface TaskLogic {
195
+ group: Array<TaskLogicUnit>;
196
+ }
189
197
  export {};
@@ -19,7 +19,7 @@ export * from './interface/struct';
19
19
  export * from './interface/table';
20
20
  export * from './interface/ui';
21
21
  export * as I18N from './plugins/i18n';
22
- export * as Execute_PART from './script/execute/interface';
22
+ export * as Execute_PART from './script/execute';
23
23
  export * as Execute_ConsoleManager from './script/console_manager';
24
24
  export * as Execute_ConsoleServerManager from './script/console_server_manager';
25
25
  export * as Execute_ExecuteManager from './script/execute_manager';
package/dist/interface.js CHANGED
@@ -58,7 +58,7 @@ __exportStar(require("./interface/struct"), exports);
58
58
  __exportStar(require("./interface/table"), exports);
59
59
  __exportStar(require("./interface/ui"), exports);
60
60
  exports.I18N = __importStar(require("./plugins/i18n"));
61
- exports.Execute_PART = __importStar(require("./script/execute/interface"));
61
+ exports.Execute_PART = __importStar(require("./script/execute"));
62
62
  exports.Execute_ConsoleManager = __importStar(require("./script/console_manager"));
63
63
  exports.Execute_ConsoleServerManager = __importStar(require("./script/console_server_manager"));
64
64
  exports.Execute_ExecuteManager = __importStar(require("./script/execute_manager"));
@@ -1,18 +1,13 @@
1
1
  import { CronJobState, ExecuteProxy, ExecuteState, Job, Libraries, Messager, Database, Project, Record, Task, WebsocketPack, WorkState } from "../../interface";
2
2
  import { WebsocketManager } from "../socket_manager";
3
3
  import { Util_Parser } from './util_parser';
4
+ import { Region_Project } from './region_project';
4
5
  export declare class ExecuteManager_Base {
5
6
  uuid: string;
6
7
  name: string;
7
8
  record: Record;
8
- current_t: Task | undefined;
9
- current_p: Project | undefined;
10
9
  current_projects: Array<Project>;
11
10
  current_nodes: Array<WebsocketPack>;
12
- current_cron: Array<CronJobState>;
13
- current_job: Array<WorkState>;
14
- current_multithread: number;
15
- current_task_count: number;
16
11
  state: ExecuteState;
17
12
  t_state: ExecuteState;
18
13
  jobstack: number;
@@ -22,7 +17,14 @@ export declare class ExecuteManager_Base {
22
17
  localPara: Database | undefined;
23
18
  websocket_manager: WebsocketManager;
24
19
  messager_log: Messager;
20
+ runner: Region_Project | undefined;
25
21
  constructor(_name: string, _websocket_manager: WebsocketManager, _messager_log: Messager, _record: Record);
22
+ get current_p(): Project | undefined;
23
+ get current_t(): Task | undefined;
24
+ get current_multithread(): number;
25
+ get current_task_count(): number;
26
+ get current_cron(): Array<CronJobState>;
27
+ get current_job(): Array<WorkState>;
26
28
  protected sync_local_para: (target: Database) => void;
27
29
  protected sync_para: (target: Database, source: WebsocketPack) => void;
28
30
  protected release: (source: WebsocketPack) => void;
@@ -8,14 +8,8 @@ class ExecuteManager_Base {
8
8
  uuid;
9
9
  name;
10
10
  record;
11
- current_t = undefined;
12
- current_p = undefined;
13
11
  current_projects = [];
14
12
  current_nodes = [];
15
- current_cron = [];
16
- current_job = [];
17
- current_multithread = 1;
18
- current_task_count = -1;
19
13
  state = interface_1.ExecuteState.NONE;
20
14
  t_state = interface_1.ExecuteState.NONE;
21
15
  jobstack = 0;
@@ -25,6 +19,7 @@ class ExecuteManager_Base {
25
19
  localPara = undefined;
26
20
  websocket_manager;
27
21
  messager_log;
22
+ runner;
28
23
  constructor(_name, _websocket_manager, _messager_log, _record) {
29
24
  this.name = _name;
30
25
  this.uuid = (0, uuid_1.v6)();
@@ -32,6 +27,24 @@ class ExecuteManager_Base {
32
27
  this.websocket_manager = _websocket_manager;
33
28
  this.messager_log = _messager_log;
34
29
  }
30
+ get current_p() {
31
+ return this.runner?.project;
32
+ }
33
+ get current_t() {
34
+ return this.runner?.runner?.task;
35
+ }
36
+ get current_multithread() {
37
+ return this.runner?.runner?.multithread ?? 1;
38
+ }
39
+ get current_task_count() {
40
+ return this.runner?.runner?.task_count ?? 0;
41
+ }
42
+ get current_cron() {
43
+ return this.runner?.runner?.cron ?? [];
44
+ }
45
+ get current_job() {
46
+ return this.runner?.runner?.job ?? [];
47
+ }
35
48
  sync_local_para = (target) => {
36
49
  this.current_nodes.forEach(x => this.sync_para(target, x));
37
50
  this.proxy?.updateDatabase(target);
@@ -76,7 +89,7 @@ class ExecuteManager_Base {
76
89
  return false;
77
90
  }
78
91
  projects.forEach(x => {
79
- x.task.forEach(t => {
92
+ x.tasks.forEach(t => {
80
93
  if (t.cronjob) {
81
94
  const index = x.database?.containers.findIndex(x => x.name == t.cronjobKey && x.type == interface_1.DataType.Number) ?? -1;
82
95
  if (index == -1) {
@@ -110,7 +123,7 @@ class ExecuteManager_Base {
110
123
  filter_lib = (projects, lib) => {
111
124
  const r = { libs: [] };
112
125
  projects.forEach(x => {
113
- x.task.forEach(y => {
126
+ x.tasks.forEach(y => {
114
127
  y.jobs.forEach(z => {
115
128
  let code = -1;
116
129
  if ((z.category == interface_1.JobCategory.Execution && z.type == interface_1.JobType.JAVASCRIPT) || (z.category == interface_1.JobCategory.Condition && z.type == interface_1.JobType2.JAVASCRIPT))
@@ -0,0 +1,8 @@
1
+ export * from './base';
2
+ export * from './feedback';
3
+ export * from './region_job';
4
+ export * from './region_project';
5
+ export * from './region_subtask';
6
+ export * from './region_task';
7
+ export * from './runner';
8
+ export * from './util_parser';
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./base"), exports);
18
+ __exportStar(require("./feedback"), exports);
19
+ __exportStar(require("./region_job"), exports);
20
+ __exportStar(require("./region_project"), exports);
21
+ __exportStar(require("./region_subtask"), exports);
22
+ __exportStar(require("./region_task"), exports);
23
+ __exportStar(require("./runner"), exports);
24
+ __exportStar(require("./util_parser"), exports);
@@ -1,5 +1,13 @@
1
+ import { Job, Task, WebsocketPack } from "../../interface";
1
2
  import { ExecuteManager } from "../execute_manager";
2
3
  export declare class Region_Job {
3
4
  target: ExecuteManager;
4
- constructor(_target: ExecuteManager);
5
+ task: Task;
6
+ job: Job;
7
+ wss: WebsocketPack;
8
+ constructor(target: ExecuteManager, task: Task, job: Job, wss: WebsocketPack);
9
+ RUN: () => void;
10
+ private string_args_transform;
11
+ private property_update;
12
+ private database_update;
5
13
  }
@@ -1,10 +1,70 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Region_Job = void 0;
4
+ const interface_1 = require("../../interface");
5
+ const util_parser_1 = require("./util_parser");
4
6
  class Region_Job {
5
7
  target;
6
- constructor(_target) {
7
- this.target = _target;
8
+ task;
9
+ job;
10
+ wss;
11
+ constructor(target, task, job, wss) {
12
+ this.target = target;
13
+ this.task = task;
14
+ this.job = job;
15
+ this.wss = wss;
8
16
  }
17
+ RUN = () => {
18
+ const n = this.job.index;
19
+ this.target.messager_log(`[Execute] Job Start ${n} ${this.job.uuid} ${this.wss.uuid}`);
20
+ this.target.proxy?.executeJobStart([this.job, n, this.wss.uuid]);
21
+ this.string_args_transform(this.task, this.job, this.target.localPara, n);
22
+ const h = {
23
+ name: 'execute_job',
24
+ channel: this.target.uuid,
25
+ data: this.job
26
+ };
27
+ this.wss.current_job.push(this.job.runtime_uuid);
28
+ const stringdata = JSON.stringify(h);
29
+ this.wss.websocket.send(stringdata);
30
+ this.target.jobstack = this.target.jobstack + 1;
31
+ };
32
+ string_args_transform = (task, job, localPara, n) => {
33
+ let e = this.database_update(localPara, n);
34
+ e = this.property_update(task, e);
35
+ for (let i = 0; i < job.string_args.length; i++) {
36
+ const b = job.string_args[i];
37
+ if (b == null || b == undefined || b.length == 0)
38
+ continue;
39
+ if (job.category == interface_1.JobCategory.Execution && job.type == interface_1.JobType.CREATE_FILE && i == 1)
40
+ continue;
41
+ job.string_args[i] = e.replacePara(job.string_args[i]);
42
+ }
43
+ };
44
+ property_update = (task, e) => {
45
+ for (let j = 0; j < task.properties.length; j++) {
46
+ const target = task.properties[j];
47
+ const times = target.deep ? target.deep : 1;
48
+ let act = target.expression;
49
+ for (let k = 0; k < times; k++) {
50
+ act = e.replacePara(`%{${act}}%`);
51
+ }
52
+ e.paras.push({ key: task.properties[j].name, value: act });
53
+ }
54
+ return e;
55
+ };
56
+ database_update = (localPara, n) => {
57
+ const e = new util_parser_1.Util_Parser([...util_parser_1.Util_Parser.to_keyvalue(localPara)]);
58
+ if (n != undefined) {
59
+ e.paras.push({ key: 'ck', value: n.toString() });
60
+ }
61
+ localPara.containers.forEach((c, index) => {
62
+ if (c.type != interface_1.DataType.Expression)
63
+ return;
64
+ c.value = e.replacePara(`%{${c.meta}}%`);
65
+ e.paras.find(p => p.key == c.name).value = c.value;
66
+ });
67
+ return e;
68
+ };
9
69
  }
10
70
  exports.Region_Job = Region_Job;
@@ -1,10 +1,10 @@
1
- import { ExecuteState, Project } from "../../interface";
1
+ import { Project } from "../../interface";
2
2
  import { ExecuteManager } from "../execute_manager";
3
3
  import { Region_Task } from "./region_task";
4
4
  export declare class Region_Project {
5
5
  target: ExecuteManager;
6
- state: ExecuteState;
7
6
  project: Project;
8
- task: Region_Task | undefined;
7
+ runner: Region_Task | undefined;
9
8
  constructor(_target: ExecuteManager, _project: Project);
9
+ RUN: () => void;
10
10
  }
@@ -5,16 +5,41 @@ const interface_1 = require("../../interface");
5
5
  const region_task_1 = require("./region_task");
6
6
  class Region_Project {
7
7
  target;
8
- state;
9
8
  project;
10
- task;
9
+ runner;
11
10
  constructor(_target, _project) {
12
11
  this.project = _project;
13
12
  this.target = _target;
14
- this.state = _project.task.length > 0 ? interface_1.ExecuteState.NONE : interface_1.ExecuteState.SKIP;
15
- if (_project.task.length > 0) {
16
- this.task = new region_task_1.Region_Task(_target, _project.task[0]);
17
- }
18
13
  }
14
+ RUN = () => {
15
+ if (this.runner == undefined && this.project.tasks.length > 0 && this.target.t_state != interface_1.ExecuteState.FINISH) {
16
+ this.runner = new region_task_1.Region_Task(this.target, this.project.tasks[0]);
17
+ this.target.messager_log(`[Execute] Task Start ${this.runner.task.uuid}`);
18
+ this.target.messager_log(`[Execute] Task cron state: ${this.runner.task.cronjob}`);
19
+ }
20
+ else if (this.project.tasks.length == 0) {
21
+ this.runner = undefined;
22
+ }
23
+ if (this.runner != undefined) {
24
+ this.runner.RUN();
25
+ }
26
+ else {
27
+ const index = this.target.current_projects.findIndex(x => x.uuid == this.project.uuid);
28
+ if (index < this.target.current_projects.length - 1) {
29
+ this.target.messager_log(`[Execute] Project Finish ${this.project.uuid}`);
30
+ this.target.proxy?.executeProjectFinish([this.project, index]);
31
+ this.target.runner = new Region_Project(this.target, this.target.current_projects[index + 1]);
32
+ this.target.proxy?.executeProjectStart([this.project, index + 1]);
33
+ this.target.t_state = interface_1.ExecuteState.NONE;
34
+ }
35
+ else {
36
+ this.target.messager_log(`[Execute] Project Finish ${this.project.uuid}`);
37
+ this.target.proxy?.executeProjectFinish([this.project, index]);
38
+ this.target.runner = undefined;
39
+ this.target.state = interface_1.ExecuteState.FINISH;
40
+ this.target.t_state = interface_1.ExecuteState.NONE;
41
+ }
42
+ }
43
+ };
19
44
  }
20
45
  exports.Region_Project = Region_Project;
@@ -1,5 +1,12 @@
1
+ import { WebsocketPack, CronJobState, Task } from "../../interface";
1
2
  import { ExecuteManager } from "../execute_manager";
3
+ import { Region_Job } from "./region_job";
2
4
  export declare class Region_Subtask {
3
5
  target: ExecuteManager;
4
- constructor(_target: ExecuteManager);
6
+ work: CronJobState;
7
+ ns: WebsocketPack;
8
+ runner: Region_Job | undefined;
9
+ constructor(target: ExecuteManager, work: CronJobState, ns: WebsocketPack);
10
+ get task(): Task;
11
+ RUN: () => void;
5
12
  }
@@ -1,10 +1,45 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Region_Subtask = void 0;
4
+ const interface_1 = require("../../interface");
5
+ const region_job_1 = require("./region_job");
4
6
  class Region_Subtask {
5
7
  target;
6
- constructor(_target) {
7
- this.target = _target;
8
+ work;
9
+ ns;
10
+ runner;
11
+ constructor(target, work, ns) {
12
+ this.target = target;
13
+ this.work = work;
14
+ this.ns = ns;
8
15
  }
16
+ get task() {
17
+ return this.target.current_t;
18
+ }
19
+ RUN = () => {
20
+ if (this.ns.current_job.length < this.target.current_multithread) {
21
+ const rindex = this.work.work.findIndex(x => x.state == interface_1.ExecuteState.RUNNING);
22
+ if (rindex != -1)
23
+ return;
24
+ const index = this.work.work.findIndex(x => x.state == interface_1.ExecuteState.NONE);
25
+ if (index == 0)
26
+ this.target.proxy?.executeSubtaskStart([this.task, this.work.id, this.ns.uuid]);
27
+ if (index == -1)
28
+ return;
29
+ this.work.work[index].state = interface_1.ExecuteState.RUNNING;
30
+ try {
31
+ const job = JSON.parse(JSON.stringify(this.task.jobs[index]));
32
+ job.index = this.work.id;
33
+ job.runtime_uuid = this.work.work[index].runtime;
34
+ if (this.runner == undefined) {
35
+ this.runner = new region_job_1.Region_Job(this.target, this.task, job, this.ns);
36
+ }
37
+ this.runner.RUN();
38
+ }
39
+ catch (err) {
40
+ this.target.messager_log(`[ExecuteCronTask Error] UUID: ${this.task.uuid}, Job count: ${this.task.jobs.length}, index: ${index}`);
41
+ }
42
+ }
43
+ };
9
44
  }
10
45
  exports.Region_Subtask = Region_Subtask;
@@ -1,10 +1,38 @@
1
- import { ExecuteState, Task } from "../../interface";
1
+ import { CronJobState, Database, ExecuteState, Project, Task, WebsocketPack, WorkState } from "../../interface";
2
2
  import { ExecuteManager } from "../execute_manager";
3
+ import { Region_Job } from "./region_job";
4
+ import { Region_Project } from "./region_project";
3
5
  import { Region_Subtask } from "./region_subtask";
6
+ import { Util_Parser } from "./util_parser";
4
7
  export declare class Region_Task {
5
8
  target: ExecuteManager;
6
- state: ExecuteState;
7
9
  task: Task;
8
- subtask: Region_Subtask | undefined;
9
- constructor(_target: ExecuteManager, _task: Task);
10
+ multithread: number;
11
+ task_count: number;
12
+ cron: Array<CronJobState>;
13
+ job: Array<WorkState>;
14
+ runners: Array<Region_Subtask | undefined>;
15
+ jrunners: Array<Region_Job | undefined>;
16
+ constructor(target: ExecuteManager, task: Task);
17
+ get project(): Project;
18
+ get parent(): Region_Project;
19
+ RUN: () => void;
20
+ ExecuteTask_Cronjob(project: Project, task: Task, taskCount: number): boolean;
21
+ ExecuteTask_Single(project: Project, task: Task, taskCount: number): boolean;
22
+ ExecuteTask_Setup(project: Project, task: Task, taskCount: number): boolean;
23
+ ExecuteTask_AllFinish(project: Project, task: Task): void;
24
+ Init_CronContainer: (taskCount: number) => void;
25
+ get_idle: () => Array<WebsocketPack>;
26
+ check_socket_state: (target: WebsocketPack) => ExecuteState.NONE | ExecuteState.RUNNING;
27
+ sync_local_para: (target: Database) => void;
28
+ sync_para: (target: Database, source: WebsocketPack) => void;
29
+ get_idle_open: () => Array<WebsocketPack>;
30
+ check_all_cron_end: () => boolean;
31
+ check_cron_end: (cron: CronJobState) => boolean;
32
+ check_single_end: () => boolean;
33
+ get_task_multi_count: (t: Task) => number;
34
+ get_task_state_count(t: Task): number;
35
+ get_number(key: string): number;
36
+ get_number_global(key: string, localPara: Database | undefined): number;
37
+ database_update: (localPara: Database, n?: number) => Util_Parser;
10
38
  }