16.10 - Sample C and C++ Code with Supported Functions from Earlier Releases - Teradata Ecosystem Manager

Teradata Ecosystem Manager API Reference

prodname
Teradata Ecosystem Manager
vrm_release
16.10
created_date
June 2017
category
Programming Reference
featnum
B035-3204-067K

The following sample shows the logical flow of a data load execution and how Ecosystem Manager API calls are used.

#include <tmsmapi.h>
/* TMSM initialization */
TM_Context* pCtx=TM_Init();   // initialize Messaging interface
MSM_UOW* pUOW=MSM_OCreateUOW(pCtx); // let API generate a unit of work
...
/* after logon processed */
MSM_WSendStart( pCtx, pUOW, szTDPID, TMSM_WRESOURCETYPE_FLOAD, TMSM_WRESOURCETYPE_FLOAD,L"Logon");
/* verify success */
if (MSM_OGetLastError(pCtx != ERROR_OK){
	/* Handle error situation */
	fwprintf(stderr, L"Start failed with error code %d", MSM_OGetLastError(pCtx));
	fwprintf(stderr, L"Failed to send start %ls", MSM_WGetLastErrorMessage(pCtx));
	/* Clear erorr information */
	MSM_OClearLastError(pCtx);
}
...
/* Acquisition phase finished */
MSM_WSendStep( pCtx,                    // TM Context
               pUOW,                    // Unit of Work
               szTDPID,                 // TDPID of target load system
               TMSM_WRESOURCETYPE_FLOAD,// Default name for the TMSM Process
               TMSM_WRESOURCETYPE_FLOAD,// TMSM Process Type ( UTILITY NAME)
               L"AcquisitionComplete",  // Unique Step Identifier
               TMSM_WDMLMODE_INSERT,    // DML affecting the table
               NULL,          // Database names where the affected table resides
		 		0, 		 		// Number of databases entered
               NULL,          // Names of the affected table
				0,				// Number of tables affected
               NULL,          // Number of affected rows
				0				// Number of row counts affected
              );
/* verify success */
if (MSM_OGetLastError(pCtx != ERROR_OK){
	/* Handle error situation */
	fwprintf(stderr, L"Send failed with error code %d", MSM_OGetLastError(pCtx));
	fwprintf(stderr, L"Failed to send step %ls", MSM_WGetLastErrorMessage(pCtx));
	/* Clear erorr information */
	MSM_OClearLastError(pCtx);
}
if (acquisitionFailed){
   MSM_WSendAlert(pCtx,                    // TM Context
                  pUOW,                    // Unit of Work
                  szTDPID,                 // TDPID of target load system
                  TMSM_WRESOURCETYPE_FLOAD,// Default name for the TMSM Process
                  TMSM_WRESOURCETYPE_FLOAD,// TMSM Process Type ( UTILITY NAME)
                  L"AcquisitionComplete",  // Unique Step Identifier
                  100000+nErrorCode      , // TMSM AlertCode
                  TMSM_SEVERITY_CRITICAL,  // TMSM Severity
                  szErrorMsg               // Error Message
                  );
   /* verify success */
   if (MSM_OGetLastError(pCtx != ERROR_OK){
		/* Handle error situation */
		fwprintf(stderr, L"Alert failed with error code %d", MSM_OGetLastError(pCtx));
		fwprintf(stderr, L"Failed to send alert %ls", MSM_WGetLastErrorMessage(pCtx));
		/* Clear erorr information */
		MSM_OClearLastError(pCtx);
   }
}
/* Apply phase completed (table has been loaded) */
MSM_WSendStep( pCtx,                    // TM Context
               pUOW,                    // Unit of Work
               szTDPID,                 // TDPID of target load system
               TMSM_RESOURCETYPE_FLOAD, // Default name for the TMSM Process
               TMSM_RESOURCETYPE_FLOAD,			 	// TMSM Process Type ( UTILITY NAME)
               L"ApplyComplete",							 		// Unique Step Identifier
               szDMLModes,									// DML affecting the table
				1,					// Number of DML Mode(s)
               szDatabaseNames,			 						// Database(s) where the affected table resides
				1, 					// Number of Database Names
               szTableNames, 					 		 // Name of the affected table(2)
				1,					// Number of tables
               lActivityCounts 		 				 // List of number(s) of affected rows
				1,					// Number of row counts
              );
/* verify success */
if (MSM_OGetLastError(pCtx != ERROR_OK){
	/* Handle error situation */
	fwprintf(stderr, L"Send failed with error code %d", MSM_OGetLastError(pCtx));
	fwprintf(stderr, L"Failed to send step %ls", MSM_WGetLastErrorMessage(pCtx));
	/* Clear erorr information */
	MSM_OClearLastError(pCtx);
}
...
if (applyFailed){
   MSM_WSendAlert(pCtx,                    												// TM Context
                  pUOW, 												// Unit of Work
                  szTDPID,                 			 // TDPID of target load system
                  TMSM_WRESOURCETYPE_FLOAD, 	// Default name for the TMSM Process
                  TMSM_WRESOURCETYPE_FLOAD, 				// TMSM Process Type ( UTILITY NAME)
                  L"ApplyComplete", 												// Unique Step Identifier
                  100000+nErrorCode      ,   // TMSM AlertCode
                  TMSM_SEVERITY_CRITICAL,  												// TMSM Severity
                  szErrorMsg                	// Error Message
                  );
   /* verify success */
   if (MSM_OGetLastError(pCtx != ERROR_OK){
	/* Handle error situation */
	fwprintf(stderr, L"Alert failed with error code %d", MSM_OGetLastError(pCtx));
	fwprintf(stderr, L"Failed to send alert %ls", MSM_WGetLastErrorMessage(pCtx));
	/* Clear erorr information */
	MSM_OClearLastError(pCtx);
   }
}
/* end of process */
MSM_WSendEnd( pCtx,                 				 							// TM Context
               pUOW,                							 				// Unit of Work
               szTDPID,              							 				// TDPID of target load system
               TMSM_WRESOURCETYPE_FLOAD, 	// Default name for the TMSM Process
               TMSM_WRESOURCETYPE_FLOAD, 	// TMSM Process Type ( UTILITY NAME)
               L"EndLoading",            	// Unique Step Identifier
               lActivityCount           	// Total Number of affected rows
              );
/* verify success */
if (MSM_OGetLastError(pCtx != ERROR_OK){
	/* Handle error situation */
	fwprintf(stderr, L"End failed with error code %d", MSM_OGetLastError(pCtx));
	fwprintf(stderr, L"Failed to end step %ls", MSM_WGetLastErrorMessage(pCtx));
	/* Clear erorr information */
	MSM_OClearLastError(pCtx);
}
...
/* do TMSM API cleanup */
MSM_FreeUOW(pUOW);
TM_Free(pCtx);