ust wanted to share code for execution of data project through code. Similar logic is used during bank statement import . If you would like to explore more look at the standard class BankStatementImportBatch. Prerequisite is you must have data project created. I am going to show simple example of creating a customer group , I created a data project called CustGroupTest
This can be useful in integration scenarios where you can get file stream from another application . In the below code I am generating stream and writing customer Group Id and name to it. Once I get the stream I am uploading it to blob as a csv file and getting fileID. This fileID is used for further execution. Execution is done by DMFQuickImportExport::doPGImport() method.
public static void main(Args _args)
{
ExecutePermission permission;
DMFDefinitionGroupEntity definitionGroupEntity;
DMFEntity dmfEntity;
FileUploadTemporaryStorageResult result;
private const str importEntityName = 'CustCustomerGroupEntity';
#File
System.IO.StreamWriter sw;
System.IO.StreamReader sr;
System.IO.MemoryStream fileStream;
fileStream = new System.IO.MemoryStream();
sw = new System.IO.StreamWriter(fileStream);
sw.WriteLine("CUSTOMERGROUPID,DESCRIPTION");
sw.WriteLine(strFmt("%1,%2",'TestGroup','Test customer group'));
sw.Flush();
SysDictClass uploadStrategyDictClass = new SysDictClass(className2Id('FileUploadTemporaryStorageStrategy'));
FileUploadTemporaryStorageStrategy fileUploadStrategy = uploadStrategyDictClass.makeObject() as FileUploadTemporaryStorageStrategy;
Debug::assert(fileUploadStrategy != null);
result = fileUploadStrategy.uploadFile(fileStream, 'custGroup.csv');
SharedServiceUnitFileID SharedServiceUnitFileID;
SharedServiceUnitFileID = result.getFileId();
fileStream.Dispose();
CodeAccessPermission::revertAssert();
DMFExecutionId executionId = DMFUtil::setupNewExecution('CustGroupTest');
select firstonly RecId, Entity from definitionGroupEntity exists join dmfEntity
where definitionGroupEntity.DefinitionGroup == 'CustGroupTest' &&
dmfEntity.EntityName == definitionGroupEntity.Entity &&
dmfEntity.TargetEntity == importEntityName ;
// Find execution
DMFDefinitionGroupExecution execution =
DMFDefinitionGroupExecution::find(
'CustGroupTest', definitionGroupEntity.Entity, executionId, true);
execution.IsTransformed = NoYes::No;
execution.FilePath = SharedServiceUnitFileID;
execution.IsTransformed = NoYes::Yes;
execution.update();
DMFQuickImportExport::doPGImport('CustGroupTest', executionId, true);
}
After running this runnable job customer group is created and you can see all the history in your data project.