mhl-dispatcher
Version:
A node dispatcher server for running and managing batch processes
269 lines (245 loc) • 6.02 kB
JavaScript
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
});
};