Цитата:
Если кому то интересно - могу выложить job, который по классу (или всему АОТ) генерит файл, который с виду похож на "java", но реализация методов на X++. По данному файлу практически любое case средство способно сгенерить диаграмму классов.
Вот job, который делает то - о чем я писал. Вариант далеко не окончательный, но для моих целей хватает:
PHP код:
static void ExportObjectToJava(Args _args)
{
AsciiIo file;
str objectName = 'InventCostItemDim';
DictClass dictClass;
DictMethod dictMethod;
int methodCount;
int parmCount;
str parmDescription;
int i, j,v;
str s;
TreeNode treeNode;
Info info = new Info();
;
dictClass = new DictClass(classname2id(objectName));
file = new AsciiIo('d:\\' + objectName + '.java', 'w');
file.write('public class ' + dictClass.name());
file.write('{');
for (i=1; i<=dictClass.objectMethodCnt(); i++)
{
dictMethod = dictClass.objectMethodObject(i);
parmCount = dictMethod.parameterCnt();
// собираем строку параметров метода
parmDescription = '';
for (j=1; j<=parmCount; j++)
{
if (parmDescription != '') parmDescription = parmDescription + ',';
parmDescription = parmDescription + enum2str(dictMethod.parameterType(j)) + ' p' + int2str(j);
}
file.write( enum2str(dictMethod.accessSpecifier()) + ' ' + // модификатор доступа
enum2str(dictMethod.returnType()) + ' ' + // return type
dictClass.objectMethod(i) + // method name
'(' + parmDescription + ')');
treeNode = info.rootNode();
treeNode = treeNode::findNode('\\Classes\\' + dictClass.name() + '\\' + dictClass.objectMethod(i));
file.write(' {');
file.write(treeNode.AOTgetSource());
file.write(' }');
}
// статические методы
v = dictClass.staticMethodCnt();
for (i=1; i<=v; i++)
{
dictMethod = dictClass.staticMethodObject(i);
s = dictMethod.name();
file.write( 'static ' + enum2str(dictMethod.accessSpecifier()) + ' ' + // модификатор доступа
enum2str(dictMethod.returnType()) + ' ' + // return type
dictClass.staticMethod(i) + // method name
'(' + ')');
treeNode = info.rootNode();
treeNode = treeNode::findNode('\\Classes\\' + dictClass.name() + '\\' + dictClass.staticMethod(i));
file.write(' {');
file.write(treeNode.AOTgetSource());
file.write(' }');
}
file.write('}');
}