123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275 |
- /*
- *+------------------------------------------------------------------------+
- *| Licensed Materials - Property of IBM
- *| IBM Cognos Products: Viewer
- *| (C) Copyright IBM Corp. 2001, 2012
- *|
- *| US Government Users Restricted Rights - Use, duplication or
- *| disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- *|
- *+------------------------------------------------------------------------+
- */
- function BusinessProcessAction() {};
- BusinessProcessAction.prototype = new CognosViewerAction();
- BusinessProcessAction.prototype.updateMenu = function( jsonSpec ) {
- var sBpmRestURI = this.getCognosViewer().envParams['bpmRestURI'];
- jsonSpec.visible = ( sBpmRestURI ? true : false );
-
- if(jsonSpec.visible) {
- jsonSpec.disabled = !this._hasAnyContextInSelectedObjects();
- }
- return jsonSpec;
- };
- BusinessProcessAction.prototype._initBPMGateway = function() {
- var cognosViewer = this.getCognosViewer();
- this.m_BPMGateway = cognosViewer.envParams['bpmRestURI'];
-
- var length = this.m_BPMGateway.length;
- if( this.m_BPMGateway[length-1] !== '/') {
- this.m_BPMGateway += '/';
- }
- };
- BusinessProcessAction.prototype.execute = function() {
- this._initBPMGateway();
- var oProcesses = this._getBPMProcesses();
- };
- BusinessProcessAction.prototype._getBPMProcesses = function() {
- var callbacks = {
- complete : { object : this, method : this.handleGetBPMProcessSuccess },
- fault : { object : this, method : this.handleGetBPMProcessFail }
- };
-
- var url = this.m_BPMGateway + 'exposed/process';
- var request = this._createBPMServerRequest( 'GET', callbacks, url );
- request.sendRequest();
-
- };
- BusinessProcessAction.prototype._createBPMServerRequest = function( action, callbacks, url, aFormFields ) {
- var xmlHttpObj = new XmlHttpObject();
- xmlHttpObj.init( action, this._rewriteURL(url) );
- xmlHttpObj.setCallbacks( callbacks );
- xmlHttpObj.setHeaders({ Accept : "application/json"} );
- if( aFormFields ) {
- for( var i in aFormFields ){
- xmlHttpObj.addFormField(aFormFields[i].name, aFormFields[i].value);
- }
- }
-
- return xmlHttpObj;
- };
- BusinessProcessAction.prototype._rewriteURL = function( url ) {
- if( bux && bux.iwidget && bux.iwidget.canvas && bux.iwidget.canvas.Helper && bux.iwidget.canvas.Helper.rewriteUrl )
- {
- return bux.iwidget.canvas.Helper.rewriteUrl( url );
- }
-
- return url;
- };
-
- BusinessProcessAction.prototype.handleGetBPMProcessFail = function( serverResponse ) {
- var sErrorMsg = RV_RES.IDS_JS_BUSINESS_PROCESS_GET_PROCESSES_FAIL_MSG;
- var sErrorDetails = serverResponse.getResponseText();
- this._showErrorMessage( sErrorMsg, sErrorDetails );
- };
- BusinessProcessAction.prototype.handleGetBPMProcessSuccess = function( serverResponse ) {
- var response = serverResponse.getResponseText();
- if( !response )
- {
- return;
- }
- var jsonResponse = dojo.fromJson( response );
-
- var oBusinessProcessesInfo = this._getBusinessProcessesInfo( jsonResponse.data.exposedItemsList );
- this._showDialog( oBusinessProcessesInfo );
- };
- BusinessProcessAction.prototype._getBusinessProcessesInfo = function( exposedItemsList ) {
- if( !exposedItemsList ){
- return;
- }
-
- var noOfItems = exposedItemsList.length;
- var bpmProcessInfo = new Array();
- var bmpProcessUniqueNamesMap = {};
- for( var i = 0; i < noOfItems; i++ ) {
- var sProcessDisplayName = exposedItemsList[i].display;
- var sProcessItemID = exposedItemsList[i].itemID;
- var sProcessAppID = exposedItemsList[i].processAppID;
-
- if( sProcessDisplayName && !bmpProcessUniqueNamesMap[sProcessDisplayName] && sProcessItemID && sProcessAppID ) {
- bmpProcessUniqueNamesMap[sProcessDisplayName] = true;
- bpmProcessInfo.push( { sCaption : sProcessDisplayName,
- sBPD_ID : sProcessItemID,
- sProcessAppID : sProcessAppID } );
- }
- };
-
- return bpmProcessInfo;
- };
- BusinessProcessAction.prototype._showDialog = function( oBPMProcessInfo ) {
-
- var oBPAction = this;
- var oSelectBusinessProcessDialog = new viewer.dialogs.SelectBusinessProcess( {
- sTitle : RV_RES.IDS_JS_BUSINESS_PROCESS_SELECT_DIALOG_TITLE,
- sLabel : RV_RES.IDS_JS_BUSINESS_PROCESS_SELECT_DIALOG_DESC,
- okHandler : function() {},
- cancelHandler : function() {},
- BPMProcessesInfo : oBPMProcessInfo,
- bpAction : oBPAction
- });
- oSelectBusinessProcessDialog.startup();
- oSelectBusinessProcessDialog.show();
- };
- /**
- * This function gets the selection context and generates the process input parameter
- * (much like the drill thru parameters)
- *
- * Should be in the format:
- * { CognosParameter : { ... } }
- */
- BusinessProcessAction.prototype.getInputParameter = function( bValueAsString ) {
- var obj = null;
- var cognosViewer = this.getCognosViewer();
- var oSectionController = cognosViewer.getSelectionController();
-
- var aJsonContexts = oSectionController.getSelectedObjectsJsonContext();
- if (aJsonContexts) {
-
- var value = aJsonContexts;
- if( bValueAsString )
- {
- value = dojo.toJson( value );
- }
- obj = {"cognosParameter": value};
- }
- return obj;
-
- }
- BusinessProcessAction.prototype.startProcess = function( sBPD_Id, sProcessAppId, sProcessName ) {
-
- var callbacks = {
- customArguments: [ sProcessName ],
- complete : { object : this, method : this.handleGetStartProcessSuccessResponse },
- fault : { object : this, method : this.handleGetStartProcessFailResponse }
- };
-
- var url = this.m_BPMGateway + 'process';
-
- var oFormFields = new Array();
- oFormFields.push( {name : 'action', value : 'start'} );
- oFormFields.push( {name : 'parts', value : 'data'} );
-
- if( sBPD_Id ) {
- oFormFields.push( {name : 'bpdId', value : sBPD_Id});
- }
-
- if( sProcessAppId ) {
- oFormFields.push( {name : 'processAppId', value : sProcessAppId} );
- }
-
- var oParam = this.getInputParameter(true /*value as string */);
- if( oParam ) {
- oFormFields.push( {name : 'params', value : dojo.toJson(oParam) } );
- }
-
- var request = this._createBPMServerRequest( 'POST', callbacks, url, oFormFields );
- request.sendRequest();
- };
- BusinessProcessAction.prototype.handleGetStartProcessSuccessResponse = function( serverResponse, sProcessName ) {
- var response = serverResponse.getResponseText();
- if( response ) {
- var jsonResponse = dojo.fromJson( response );
- if( jsonResponse.status === "200" ) {
-
- var sMsg = CViewerCommon.getMessage(RV_RES.IDS_JS_BUSINESS_PROCESS_START_PROCESS_SUCCEED_MSG, sProcessName );
- var oInfoMsgDialog = new ModalInfoMessageDialog({
- sTitle : RV_RES.IDS_JS_BUSINESS_PROCESS_START_PROCESS_SUCCEED_MSG_TITLE,
- sMessage : sMsg,
- sDescription : RV_RES.IDS_JS_BUSINESS_PROCESS_START_PROCESS_SUCCEED_MSG_DETAIL
- });
- oInfoMsgDialog.show();
- }
- }
- };
- BusinessProcessAction.prototype.handleGetStartProcessFailResponse = function( serverResponse, sProcessName ) {
- var response = serverResponse.getResponseXml();
- if( response && response.documentElement )
- {
- this._handleXMLErrorResponse( response, sProcessName );
- return;
- }
-
- var sErrorMsg = CViewerCommon.getMessage( RV_RES.IDS_JS_BUSINESS_PROCESS_START_PROCESS_FAILED_MSG, sProcessName );
-
- var sErrorDetails = serverResponse.getResponseText();
- try{
- var jsonResponse = dojo.fromJson( sErrorDetails );
- sErrorDetails = jsonResponse.Data.errorMessage;
- } catch(err) {/*swallow exception*/}
-
- this._showErrorMessage( sErrorMsg, sErrorDetails );
- };
- BusinessProcessAction.prototype._handleXMLErrorResponse = function( xmlError, sProcessName ) {
-
- var eError = XMLHelper_FindChildrenByTagName( xmlError, "error" );
- var sErrorMessage = "";
- var sErrorDetails = "";
-
- if( eError ) {
- sErrorMessage = XMLHelper_FindChildrenByTagName( eError, "message" ).childNodes[0].nodeValue;
- sErrorDetails = XMLHelper_FindChildrenByTagName( eError, "detail" ).childNodes[0].nodeValue;
- }
- else
- {
- sErrorMessage = CViewerCommon.getMessage( RV_RES.IDS_JS_BUSINESS_PROCESS_START_PROCESS_FAILED_MSG, sProcessName);
- }
- this._showErrorMessage( sErrorMessage, sErrorDetails );
- };
- BusinessProcessAction.prototype._showErrorMessage = function( sErrorMsg, sErrorDetails ) {
- var errorDialog = new ModalFaultMessageDialog( sErrorMsg, sErrorDetails );
- errorDialog.show();
- };
- BusinessProcessAction.prototype._hasAnyContextInSelectedObjects = function() {
-
- var foundCtx = false;
- var oSectionController = this.m_oCV.getSelectionController();
-
- var aSelectedObjects = oSectionController.getAllSelectedObjects();
- for( var i=0; i<aSelectedObjects.length; i++) {
- var aCtxIds = aSelectedObjects[i].getSelectedContextIds();
- if (aCtxIds && aCtxIds.length>0) {
- foundCtx= true;
- break;
- }
- }
- return foundCtx;
- };
|