Description:-
Here is a job I wrote that demonstrates a bunch of different ways of doing what you're wanting:
Code:-
Here is a job I wrote that demonstrates a bunch of different ways of doing what you're wanting:
static void Job79(Args _args) { TreeNode treeNode = TreeNode::findNode(@'\Classes\Activities'); SysDictClass sysDictClass = new SysDictClass(treeNode.applObjectId()); FormRun formRun = new FormRun(new Args(formStr(AifAction))); Form form = new Form(formStr(AifAction)); ClassBuild classBuild; SysDictTable sysDictTable = new SysDictTable(tableNum(AccountSumMap)); // Maps are treated like tables SysDictMethod sysDictMethod; int i; MemberFunction method; strmethodSource = 'public static strgetTime()\n{\n\treturn "3/3/2015";\n}'; // Find if class has a method if (sysDictClass.hasObjectMethod('delete')) { info("Found object method delete"); } if(sysDictClass.hasStaticMethod('main')) { info("Found static method main"); } // Find if form has a method if (formHasMethod(formRun, 'init')) { info("Found form method 'init'"); } if (form.AOTfindChild('methods').AOTfindChild('refreshGrid') != null) { info("Found 'refreshGrid' method on AifAction"); } if (sysDictClass.hasStaticMethod('getTime') == false) { classBuild = new ClassBuild(sysDictClass.name()); treeNode = classBuild.addMethod('getTime', methodSource); if (classBuild.classNode().AOTcompile()) { classBuild.classNode().AOTsave(); info("Added method getTime, compiled, and saved"); } else { info(strFmt("Unable to compile method 'getTime' with source code '%1', restoring class...", treeNode.AOTgetSource())); //Delete the non-compiling method if (treeNode) treeNode.AOTdelete(); classBuild.classNode().AOTsave(); } } else { info("Method 'getTime' already exists"); } if (sysDictTable.isMap()) { if (sysDictTable.doesMethodExist('getTime') == false) { treeNode = sysDictTable.treeNode().AOTfindChild('methods').AOTadd('getTime'); method = sysDictTable.treeNode().AOTfindChild('methods').AOTfindChild('getTime'); method.AOTsave(); method.AOTsetSource(methodSource, true); method.AOTsave(); if (sysDictTable.treeNode().AOTcompile()) { sysDictTable.treeNode().AOTsave(); info(strFmt("Added 'getTime' to AccountSumMap")); } else { info(strFmt("Unable to compile method 'getTime' with source code '%1', restoring class...", treeNode.AOTgetSource())); // Delete the non-compiling method if (treeNode) treeNode.AOTdelete(); sysDictTable.treeNode().AOTsave(); } } } }
Thanks for comments.....