Multi-Project module reused between Client and Task Server

This commit is contained in:
Luis Fernando Molina committed 2021-08-30 11:16:04 +02:00
1 parent 6504f47b6f
commit 71514d580e
8 files changed
+80 -137

No files matched your search

+15 -12
View File
@@ -54,17 +54,6 @@ global.CUSTOM_FAIL_RESPONSE = {
message: 'Custom Message'
}
/*
The CL object is accesible everywhere at the Superalgos Client.
It provides access to all modules built for this Client.
*/
global.CL = {}
/*
The SA object is accesible everywhere at the Superalgos Client.
It provides access to all modules built Superalgos in general.
*/
global.SA = {}
/* Servers */
let WEB_SERVER = require('./webServer.js')
let DATA_FILE_SERVER = require('./dataFileServer.js')
@@ -82,10 +71,24 @@ let WEB_SOCKETS_INTERFACE = require('./webSocketsInterface.js')
let HTTP_INTERFACE = require('./httpInterface.js')
try {
/*
The CL object is accesible everywhere at the Superalgos Client.
It provides access to all modules built for this Client.
*/
global.CL = {}
/*
The SA object is accesible everywhere at the Superalgos Client.
It provides access to all modules built Superalgos in general.
*/
global.SA = {}
/*
First thing is to load the project schema file.
*/
global.PROJECTS_SCHEMA = require(global.env.PATH_TO_PROJECT_SCHEMA)
/*
Setting up the modules that will be available for the Servers Running inside this Client
*/
let MULTI_PROJECT = require('./MultiProject.js');
let MULTI_PROJECT = require('../MultiProject.js');
let MULTI_PROJECT_MODULE = MULTI_PROJECT.newMultiProject()
MULTI_PROJECT_MODULE.initialize(CL, 'CL')
MULTI_PROJECT_MODULE.initialize(SA, 'SA')
+2 -1
View File
@@ -8,7 +8,8 @@ exports.newEnvironment = function () {
PATH_TO_DATA_STORAGE: './Data-Storage',
PATH_TO_PROJECTS: './Projects',
PATH_TO_LOG_FILES: './Log-Files',
PATH_TO_PROJECTS_REQUIRED: '../Projects',
PATH_TO_PROJECTS_REQUIRED: './Projects',
PATH_TO_PROJECT_SCHEMA: '../Projects/ProjectsSchema.json',
PATH_TO_UI: './UI',
PATH_TO_DATA_FILES: './UI/Data-Files/src',
PATH_TO_CLIENT: './Client/',
+37 -6
View File
@@ -8,12 +8,7 @@ exports.newMultiProject = function () {
function initialize(rootObject, rootObjectName) {
/*
First thing is to load the project schema file.
*/
let PROJECTS_SCHEMA = require(global.env.PATH_TO_PROJECTS_REQUIRED + '/' + 'ProjectsSchema.json')
/*
Here we will setup the CL object, with all the
Here we will setup the rootObject object, with all the
projects and modules that will have inside.
*/
rootObject.projects = {}
@@ -26,6 +21,9 @@ exports.newMultiProject = function () {
projectInstance.utilities = {}
projectInstance.globals = {}
projectInstance.functionLibraries = {}
projectInstance.taskModules = {}
projectInstance.processModules = {}
projectInstance.botModules = {}
if (projectDefinition[rootObjectName] === undefined) { continue }
@@ -64,6 +62,39 @@ exports.newMultiProject = function () {
projectInstance.functionLibraries[functionLibraryDefinition.propertyName] = requiredFunction.call()
}
}
/* Set up Task Modules for this Project */
if (projectDefinition[rootObjectName].taskModules !== undefined) {
for (let j = 0; j < projectDefinition[rootObjectName].taskModules.length; j++) {
let taskModuleDefinition = projectDefinition[rootObjectName].taskModules[j]
let path = global.env.PATH_TO_PROJECTS_REQUIRED + '/' + projectDefinition.name + '/' + rootObjectName + '/' + 'Task-Modules' + '/' + taskModuleDefinition.fileName
let requiredObject = require(path)
projectInstance.taskModules[taskModuleDefinition.propertyName] = requiredObject
}
}
/* Set up Process Modules for this Project */
if (projectDefinition[rootObjectName].processModules !== undefined) {
for (let j = 0; j < projectDefinition[rootObjectName].processModules.length; j++) {
let processModuleDefinition = projectDefinition[rootObjectName].processModules[j]
let path = global.env.PATH_TO_PROJECTS_REQUIRED + '/' + projectDefinition.name + '/' + rootObjectName + '/' + 'Process-Modules' + '/' + processModuleDefinition.fileName
let requiredObject = require(path)
projectInstance.processModules[processModuleDefinition.propertyName] = requiredObject
}
}
/* Set up Bot Modules for this Project */
if (projectDefinition[rootObjectName].botModules !== undefined) {
for (let j = 0; j < projectDefinition[rootObjectName].botModules.length; j++) {
let botModuleDefinition = projectDefinition[rootObjectName].botModules[j]
let path = global.env.PATH_TO_PROJECTS_REQUIRED + '/' + projectDefinition.name + '/' + rootObjectName + '/' + 'Bot-Modules' + '/' + botModuleDefinition.folderName + '/' + botModuleDefinition.fileName
let requiredObject = require(path)
projectInstance.botModules[botModuleDefinition.propertyName] = requiredObject
}
}
}
}
}
@@ -115,8 +115,8 @@ exports.newFoundationsBotModulesLearningSystem = function (processIndex) {
We will scan the project schema until we find the machine learning library
defined by the user at the UI.
*/
for (let i = 0; i < TS.projects.foundations.globals.taskConstants.PROJECTS_SCHEMA.length; i++) {
let projectSchemaProject = TS.projects.foundations.globals.taskConstants.PROJECTS_SCHEMA[i]
for (let i = 0; i < PROJECTS_SCHEMA.length; i++) {
let projectSchemaProject = PROJECTS_SCHEMA[i]
if (projectSchemaProject.name !== machineLearningLibrary.project) { continue }
for (let j = 0; j < projectSchemaProject.TS.botModules.length; j++) {
@@ -32,8 +32,8 @@ exports.newFoundationsFunctionLibrariesTaskFunctions = function () {
We will scan the project schema until we find the module that will run the bot
botModule with the name provided.
*/
for (let i = 0; i < TS.projects.foundations.globals.taskConstants.PROJECTS_SCHEMA.length; i++) {
let project = TS.projects.foundations.globals.taskConstants.PROJECTS_SCHEMA[i]
for (let i = 0; i < PROJECTS_SCHEMA.length; i++) {
let project = PROJECTS_SCHEMA[i]
if (project.name !== TS.projects.foundations.globals.taskConstants.PROJECT_DEFINITION_NODE.config.codeName) { continue }
for (let j = 0; j < project.TS.botModules.length; j++) {
botModuleDefinition = project.TS.botModules[j]
-109
View File
@@ -1,109 +0,0 @@
exports.newMultiProject = function () {
let thisObject = {
initialize: initialize
}
return thisObject;
function initialize() {
/*
First thing is to load the project schema file.
*/
let PROJECTS_SCHEMA = require(global.env.PATH_TO_PROJECTS_REQUIRED + '/' + 'ProjectsSchema.json')
/*
Here we will setup the TS object, with all the
projects and modules that will have inside.
*/
global.TS = {
projects: {}
}
for (let i = 0; i < PROJECTS_SCHEMA.length; i++) {
let projectDefinition = PROJECTS_SCHEMA[i]
global.TS.projects[projectDefinition.propertyName] = {}
let projectInstance = global.TS.projects[projectDefinition.propertyName]
projectInstance.utilities = {}
projectInstance.globals = {}
projectInstance.functionLibraries = {}
projectInstance.taskModules = {}
projectInstance.processModules = {}
projectInstance.botModules = {}
if (projectDefinition.TS === undefined) { continue }
/* Set up Utilities of this Project */
if (projectDefinition.TS.utilities !== undefined) {
for (let j = 0; j < projectDefinition.TS.utilities.length; j++) {
let utilityDefinition = projectDefinition.TS.utilities[j]
let path = global.env.PATH_TO_PROJECTS_REQUIRED + '/' + projectDefinition.name + '/' + 'TS' + '/' + 'Utilities' + '/' + utilityDefinition.fileName
let requiredObject = require(path)
let requiredFunction = requiredObject[utilityDefinition.functionName]
projectInstance.utilities[utilityDefinition.propertyName] = requiredFunction.call()
}
}
/* Set up Globals of this Project */
if (projectDefinition.TS.globals !== undefined) {
for (let j = 0; j < projectDefinition.TS.globals.length; j++) {
let globalDefinition = projectDefinition.TS.globals[j]
let path = global.env.PATH_TO_PROJECTS_REQUIRED + '/' + projectDefinition.name + '/' + 'TS' + '/' + 'Globals' + '/' + globalDefinition.fileName
let requiredObject = require(path)
let requiredFunction = requiredObject[globalDefinition.functionName]
projectInstance.globals[globalDefinition.propertyName] = requiredFunction.call()
}
}
/* Set up Function Libraries of this Project */
if (projectDefinition.TS.functionLibraries !== undefined) {
for (let j = 0; j < projectDefinition.TS.functionLibraries.length; j++) {
let functionLibraryDefinition = projectDefinition.TS.functionLibraries[j]
let path = global.env.PATH_TO_PROJECTS_REQUIRED + '/' + projectDefinition.name + '/' + 'TS' + '/' + 'Function-Libraries' + '/' + functionLibraryDefinition.fileName
let requiredObject = require(path)
let requiredFunction = requiredObject[functionLibraryDefinition.functionName]
projectInstance.functionLibraries[functionLibraryDefinition.propertyName] = requiredFunction.call()
}
}
/* Set up Process Modules for this Project */
if (projectDefinition.TS.taskModules !== undefined) {
for (let j = 0; j < projectDefinition.TS.taskModules.length; j++) {
let taskModuleDefinition = projectDefinition.TS.taskModules[j]
let path = global.env.PATH_TO_PROJECTS_REQUIRED + '/' + projectDefinition.name + '/' + 'TS' + '/' + 'Task-Modules' + '/' + taskModuleDefinition.fileName
let requiredObject = require(path)
projectInstance.taskModules[taskModuleDefinition.propertyName] = requiredObject
}
}
/* Set up Process Modules for this Project */
if (projectDefinition.TS.processModules !== undefined) {
for (let j = 0; j < projectDefinition.TS.processModules.length; j++) {
let processModuleDefinition = projectDefinition.TS.processModules[j]
let path = global.env.PATH_TO_PROJECTS_REQUIRED + '/' + projectDefinition.name + '/' + 'TS' + '/' + 'Process-Modules' + '/' + processModuleDefinition.fileName
let requiredObject = require(path)
projectInstance.processModules[processModuleDefinition.propertyName] = requiredObject
}
}
/* Set up Bot Modules for this Project */
if (projectDefinition.TS.botModules !== undefined) {
for (let j = 0; j < projectDefinition.TS.botModules.length; j++) {
let botModuleDefinition = projectDefinition.TS.botModules[j]
let path = global.env.PATH_TO_PROJECTS_REQUIRED + '/' + projectDefinition.name + '/' + 'TS' + '/' + 'Bot-Modules' + '/' + botModuleDefinition.folderName + '/' + botModuleDefinition.fileName
let requiredObject = require(path)
projectInstance.botModules[botModuleDefinition.propertyName] = requiredObject
}
}
}
TS.projects.foundations.globals.taskConstants.PROJECTS_SCHEMA = PROJECTS_SCHEMA
}
}
+2 -2
View File
@@ -52,8 +52,8 @@
the bot type received via websockets events, at the PROJECTS SCHEMA a botModule must be
defined with the same type at the property botType.
*/
for (let i = 0; i < TS.projects.foundations.globals.taskConstants.PROJECTS_SCHEMA.length; i++) {
let project = TS.projects.foundations.globals.taskConstants.PROJECTS_SCHEMA[i]
for (let i = 0; i < PROJECTS_SCHEMA.length; i++) {
let project = PROJECTS_SCHEMA[i]
if (project.name !== TS.projects.foundations.globals.taskConstants.PROJECT_DEFINITION_NODE.config.codeName) { continue }
for (let j = 0; j < project.TS.botModules.length; j++) {
botModuleDefinition = project.TS.botModules[j]
+20 -3
View File
@@ -8,10 +8,27 @@ let NODE_JS_PROCESS = require('./NodeJsProcess.js');
let NODE_JS_PROCESS_MODULE = NODE_JS_PROCESS.newNodeJsProcess()
NODE_JS_PROCESS_MODULE.initialize()
/* Setting up the modules that will be available for the Task and it's processes */
let MULTI_PROJECT = require('./MultiProject.js');
/*
The TS object is accesible everywhere at the Superalgos Client.
It provides access to all modules built for the Task Server.
*/
global.TS = {}
/*
The SA object is accesible everywhere at the Superalgos Client.
It provides access to all modules built Superalgos in general.
*/
global.SA = {}
/*
First thing is to load the project schema file.
*/
global.PROJECTS_SCHEMA = require(global.env.PATH_TO_PROJECT_SCHEMA)
/*
Setting up the modules that will be available for the Servers Running inside this Client
*/
let MULTI_PROJECT = require('../MultiProject.js');
let MULTI_PROJECT_MODULE = MULTI_PROJECT.newMultiProject()
MULTI_PROJECT_MODULE.initialize()
MULTI_PROJECT_MODULE.initialize(TS, 'TS')
MULTI_PROJECT_MODULE.initialize(SA, 'SA')
/* Setting up the global Event Handler */
TS.projects.foundations.globals.taskConstants.EVENT_SERVER_CLIENT_MODULE_OBJECT = TS.projects.foundations.taskModules.eventServerClient.newFoundationsTaskModulesEventServerClient()