Ax 2012 r3, x++
paylaşılan projelerin xpo olarak dışarı aktarımı.
Following code exports all projects in the Shared node. For each run it creates a new folder and then the projects are individually exported to xpo.
static void ExportAllProjects(Args _args)
{
ProjectNode sharedProject = Infolog.projectRootNode().AOTfindChild("Shared");
TreeNodeIterator treeIterator;
TreeNode childNode;
str folderPath = @"C:\\AXProjects\\";
str folderName;
System.DateTime dateTime = DateTimeUtil::newDateTime(systemDateGet(), timeNow());
void exportProject(TreeNode _projectNode)
{
FileIoPermission perm;
str exportFileName;
if(_projectNode != null)
{
exportFileName = folderPath + folderName + "\\" + _projectNode.AOTname() + ".xpo";
perm = new FileIoPermission(exportFileName, "W");
perm.assert();
_projectNode.treeNodeExport(exportFileName);
CodeAccessPermission::revertAssert();
}
}
folderName = dateTime.ToString("yyyyMMdd_HHmmss");
if(sharedProject)
{
treeIterator = sharedProject.AOTiterator();
if(treeIterator)
{
if(!WinAPI::pathExists(folderPath + folderName))
{
info(strFmt('Creating the folder %1', folderPath + folderName));
WinAPI::createDirectoryPath(folderPath + folderName);
}
childNode = treeIterator.next();
while (childNode)
{
info(strFmt('Exporting %1', childNode.AOTname()));
exportProject(childNode);
childNode = treeIterator.next();
}
}
sharedProject.treeNodeRelease();
}
}
veya
static void WIK_ExportLayer(Args _args)
{
#define.ModelToExport1("ISV Model")
#define.ModelToExport2("USR Model")
#define.ExportDestination(@"C:\Temp\")
#AOTExport
boolean currentLayerOnly = true;
void exportModel(ModelName _modelName)
{
ProjectNode project;
SysModelCreateProject createProject = SysModelCreateProject::construct();
ProjectName projectName = strReplace(_modelName, ' ', '_') + '_All';
SysModel model;
SysModelManifest modelManifest;
SysModelElement modelElement;
SysModelElementData modelElementData;
SysLabelFileExport label = SysLabelFileExport::construct();
select firstOnly Model, RecId from modelManifest
where modelManifest.Name == _modelName
join Layer from model
where modelManifest.Model == model.RecId
&& model.Layer == currentAOLayer();
createProject.parmModelId(modelManifest.RecId);
createProject.parmProjectName(projectName);
if (createProject.parmModelId())
{
// Export model metadata and source
createProject.run();
project = SysTreeNode::getPrivateProject().AOTfindChild(projectName);
project.treeNodeExport(#ExportDestination + projectName + '.xpo', currentLayerOnly ? #export | #expLayer : #export);
// Export label files and languages
while select modelElement
where modelElement.ElementType == UtilElementType::LabelFileLanguage
exists join modelElementData
where modelElementData.ModelId == modelManifest.Model
&& modelElement.RecId == modelElementData.ModelElement
{
label.parmTreenode(TreeNode::findNode(SysTreeNode::modelElement2Path(modelElement)));
label.parmPath(#ExportDestination);
label.run();
}
// Export project definitions
while select modelElement
where modelElement.ElementType == UtilElementType::SharedProject
exists join modelElementData
where modelElementData.ModelId == modelManifest.Model
&& modelElement.RecId == modelElementData.ModelElement
{
project = TreeNode::findNode(SysTreeNode::modelElement2Path(modelElement));
if (!WinAPI::folderExists(#ExportDestination + 'Projects'))
{
WinAPI::createDirectory(#ExportDestination + 'Projects');
}
project.treeNodeExport(#ExportDestination + @'Projects\' + enum2str(currentAOLayer()) + modelElement.Name + '.xpo', currentLayerOnly ? #export | #expProjectOnly | #expLayer : #export | #expProjectOnly);
}
}
else
{
error(strFmt('Layer %1 does not have model %2', strUpr(enum2str(currentAOLayer())), _modelName));
}
}
exportModel(#ModelToExport1);
exportModel(#ModelToExport2);
}
|