UNPKG

mhl-dispatcher

Version:

A node dispatcher server for running and managing batch processes

269 lines (245 loc) 6.02 kB
var odp = require('node-odp'), CONNECTION_STRING = 'Data Source=mhladmin;User Id=/;', dbType = odp.OracleData.dbType, parameterDirection = odp.OracleData.parameterDirection, commandType = odp.OracleCommand.commandType, db = {}; 'use strict'; module.exports = exports = db; db.connection = null; db.closed = true; db.connect = function(){ db.connection = new odp.OracleConnection(CONNECTION_STRING); return db.open(); }; db.reconnect = function(){ db.dispose(); return db.connect(); }; db.open = function(){ if(db.connection){ try{ db.connection.open(); db.closed = false; return ''; }catch(e){ console.log( 'Error: ' + e) return e; } } return 'No connection avaliable..'; }; db.close = function(){ if(db.connection){ db.connection.close(); db.closed = true; } }; db.dispose = function(){ if(!db.closed){ db.close(); db.connection.dispose(); } db.connection = null; }; //Register the server with db db.registerServer = function(server, callback){ var params = [{ name: 'SERVERID', type: dbType.INT32, value:'', direction: parameterDirection.OUTPUT }, { name:'pBSHOSTNAME', type: dbType.VARCHAR2, size: 2000, value: server, direction: parameterDirection.INPUT }]; db.executeCommand({ commandText: 'BEGIN :SERVERID := BMD.SERVER_API.registerServer(:pBSHOSTNAME); END;', commandType: commandType.TEXT, parameters: params, callback: callback }); }; db.executeCommand = function(args){ var cmdObject = new odp.OracleCommand(args.commandText, args.commandType, args.parameters, db.connection); cmdObject.executeNonQuery(args.callback || function(){}); }; db.setServerStatus = function(serverId, status, callback){ var params = [ { name: 'pSERVERID', type: dbType.INT32, value: serverId, direction: parameterDirection.INPUT },{ name: 'pBSSTATUSCODE', type: dbType.VARCHAR2, size: 2000, value: status, direction: parameterDirection.INPUTOUTPUT },{ name: 'pBSSTATUSDESCRIPTION', type: dbType.VARCHAR2, size: 2000, value: '', direction: parameterDirection.INPUTOUTPUT } ]; db.executeCommand({ commandText: 'BEGIN BMD.SERVER_API.setServerStatus(:pSERVERID, :pBSSTATUSCODE, :pBSSTATUSDESCRIPTION); END;', commandType: commandType.TEXT, parameters: params, callback: callback }); }; db.getNextBatch = function(serverId, callback){ var params = [ { name: 'pSERVERID', type: dbType.INT32, value: serverId, direction: parameterDirection.INPUT }, { name: 'pBATCHID', type: dbType.INT32, value: 0, direction: parameterDirection.OUTPUT }, { name: 'pBATCHTYPECODE', type: dbType.VARCHAR2, size: 2000, value: '', direction: parameterDirection.OUTPUT } ]; db.executeCommand({ commandText: 'BEGIN BMD.BATCH_ADMIN.getNextBatch(:pSERVERID, :pBATCHID, :pBATCHTYPECODE); END;', commandType: commandType.TEXT, parameters: params, callback: callback }); }; db.getBatchParameters = function(batchId, callback){ var params = [ { name: 'pBATCHID', type: dbType.INT32, value: batchId, direction: parameterDirection.INPUT }, { name: 'pResultJSON', type: dbType.CLOB, size: 5000, value: '', direction: parameterDirection.INPUTOUTPUT } ]; db.executeCommand({ commandText: 'BEGIN BMD.BATCH_API2.getBatchParameters_JSON(:pBATCHID, :pResultJSON); END;', commandType: commandType.TEXT, parameters: params, callback: callback }); }; db.batchLog = function(batchId, logSeverity, logMessage, messageGroup, procedureName, currentState, callback){ var params = [ { name: 'pBATCHID', type: dbType.INT32, value: batchId, direction: parameterDirection.INPUT }, { name: 'pBATCHLOGSEVERITY', type: dbType.INT32, value: logSeverity, direction: parameterDirection.INPUT }, { name: 'pBATCHLOGMESSAGE', type: dbType.VARCHAR2, size: 2000, value: logMessage, direction: parameterDirection.INPUT }, { name: 'pBATCHLOGMESSAGEGROUP', type: dbType.VARCHAR2, size: 2000, value: messageGroup, direction: parameterDirection.INPUT }, { name: 'pBATCHLOGPROCEDURENAME', type: dbType.VARCHAR2, size: 1000, value: procedureName, direction: parameterDirection.INPUT }, { name: 'pBATCHLOGCURRENTSTATE', type: dbType.VARCHAR2, size: 2000, value: currentState, direction: parameterDirection.INPUT } ]; db.executeCommand({ commandText: 'BEGIN BMD.BATCH_ADMIN.InsertBatchLogEntry(:pBATCHID, :pBATCHLOGSEVERITY, :pBATCHLOGMESSAGE, :pBATCHLOGMESSAGEGROUP, :pBATCHLOGPROCEDUREGROUP, :pBATCHLOGCURRENTSTATE); END;', commandType: commandType.TEXT, parameters: params, callback: callback }); }; db.setBatchStatus = function(batchId, status ,callback){ var params = [ { name: 'pBATCHID', type: dbType.INT32, value: batchId, direction: parameterDirection.INPUT }, { name: 'pBATCHSTATUSCODE', type: dbType.VARCHAR2, size: 2000, value: status, direction: parameterDirection.INPUT } ]; db.executeCommand({ commandText: 'BEGIN BMD.BATCH_ADMIN.setBatchStatus(:pBATCHID, :pBATCHSTATUSCODE); END;', commandType: commandType.TEXT, parameters: params, callback: callback }); }; db.setServerBatchDone = function(serverId, batchId, callback){ var params = [ { name: 'pSERVERID', type: dbType.INT32, value: serverId, direction: parameterDirection.INPUT }, { name: 'pBATCHID', type: dbType.INT32, value: batchId, direction: parameterDirection.INPUT } ]; db.executeCommand({ commandText: 'BEGIN BMD.BATCH_ADMIN.setServerBatchDone(:pSERVERID, :pBATCHID); END;', commandType: commandType.TEXT, parameters: params, callback: callback }); };