Sparx EA 模板片段脚本不输出任何数据
Sparx EA template fragment scripting not outputs any data
已遵循此说明 here
创建了我自己的 document template fragment
,其中包含自定义字段。
将自定义脚本绑定到它(代码将在下面)
创建了包含我的 document template fragment
的 document
模板(在 custom
标签内的模板片段中,我添加了 Author
和 TimeGen
等自定义字段)
在上面使用了文档生成,但我得到的是一个空文档!
为什么会这样?
我得到了 Sparx Ea 12 版本
脚本代码(从示例here复制而来)
function MyRtfData(objectID) {
var i;
var xmlDOM = new ActiveXObject("Microsoft.XMLDOM");
xmlDOM.validateOnParse = false;
xmlDOM.async = false;
var node = xmlDOM.createProcessingInstruction("xml", "version='1.0' encoding='ISO-8859-1'");
xmlDOM.appendChild(node);
var xmlRoot = xmlDOM.createElement("EADATA");
xmlDOM.appendChild(xmlRoot);
var xmlDataSet = xmlDOM.createElement("Dataset_0");
xmlRoot.appendChild(xmlDataSet);
var xmlData = xmlDOM.createElement("Data");
xmlDataSet.appendChild(xmlData);
var xmlRow = xmlDOM.createElement("Row");
xmlData.appendChild(xmlRow);
var xmlName = xmlDOM.createElement("DateGen");
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth() + 1; //January is 0!
var yyyy = today.getFullYear();
if (dd < 10) {
dd = '0' + dd
}
if (mm < 10) {
mm = '0' + mm
}
today = mm + '/' + dd + '/' + yyyy;
xmlName.text = today;
xmlRow.appendChild(xmlName);
var xmlName = xmlDOM.createElement("TimeGen");
var currentTime = new Date()
var hours = currentTime.getHours()
var minutes = currentTime.getMinutes()
if (minutes < 10) {
minutes = "0" + minutes
}
xmlName.text = hours + ":" + minutes + " ";
xmlRow.appendChild(xmlName);
var xmlName = xmlDOM.createElement("Author");
xmlName.text = Session.UserName;
xmlRow.appendChild(xmlName);
var xmlName = xmlDOM.createElement("EA_REPOS");
xmlName.text = Repository.ConnectionString;
xmlRow.appendChild(xmlName);
return xmlDOM.xml;
};
当我在调试模式下 运行 它似乎没问题,它输出一些 xml 结构,但是当我生成文档时 - 我只是空 sheet
UPD:
现在出现 rtf 错误,系统输出为空
错误看起来像这样:
UPD2:
当我调试它时它输出有效 XML
问题已解决!我的意思是我可以使用 template framents + scripts
机制生成带有自定义字段的文档。
我所做的(长话短说 - 从头开始一切):
- 新建脚本组
- 在那里创建了新的
JScript
文件(那个
上面的代码包含在 Javascript
文件中,也许是
原因)
- 创建了新
fragment template
,创建了自定义 Autor
字段
那里
- 创建了
template
,添加了我的 fragment template
已遵循此说明 here
创建了我自己的 document template fragment
,其中包含自定义字段。
将自定义脚本绑定到它(代码将在下面)
创建了包含我的 document template fragment
的 document
模板(在 custom
标签内的模板片段中,我添加了 Author
和 TimeGen
等自定义字段)
在上面使用了文档生成,但我得到的是一个空文档! 为什么会这样?
我得到了 Sparx Ea 12 版本
脚本代码(从示例here复制而来)
function MyRtfData(objectID) {
var i;
var xmlDOM = new ActiveXObject("Microsoft.XMLDOM");
xmlDOM.validateOnParse = false;
xmlDOM.async = false;
var node = xmlDOM.createProcessingInstruction("xml", "version='1.0' encoding='ISO-8859-1'");
xmlDOM.appendChild(node);
var xmlRoot = xmlDOM.createElement("EADATA");
xmlDOM.appendChild(xmlRoot);
var xmlDataSet = xmlDOM.createElement("Dataset_0");
xmlRoot.appendChild(xmlDataSet);
var xmlData = xmlDOM.createElement("Data");
xmlDataSet.appendChild(xmlData);
var xmlRow = xmlDOM.createElement("Row");
xmlData.appendChild(xmlRow);
var xmlName = xmlDOM.createElement("DateGen");
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth() + 1; //January is 0!
var yyyy = today.getFullYear();
if (dd < 10) {
dd = '0' + dd
}
if (mm < 10) {
mm = '0' + mm
}
today = mm + '/' + dd + '/' + yyyy;
xmlName.text = today;
xmlRow.appendChild(xmlName);
var xmlName = xmlDOM.createElement("TimeGen");
var currentTime = new Date()
var hours = currentTime.getHours()
var minutes = currentTime.getMinutes()
if (minutes < 10) {
minutes = "0" + minutes
}
xmlName.text = hours + ":" + minutes + " ";
xmlRow.appendChild(xmlName);
var xmlName = xmlDOM.createElement("Author");
xmlName.text = Session.UserName;
xmlRow.appendChild(xmlName);
var xmlName = xmlDOM.createElement("EA_REPOS");
xmlName.text = Repository.ConnectionString;
xmlRow.appendChild(xmlName);
return xmlDOM.xml;
};
当我在调试模式下 运行 它似乎没问题,它输出一些 xml 结构,但是当我生成文档时 - 我只是空 sheet
UPD:
现在出现 rtf 错误,系统输出为空
错误看起来像这样:
UPD2:
当我调试它时它输出有效 XML
问题已解决!我的意思是我可以使用 template framents + scripts
机制生成带有自定义字段的文档。
我所做的(长话短说 - 从头开始一切):
- 新建脚本组
- 在那里创建了新的
JScript
文件(那个 上面的代码包含在Javascript
文件中,也许是 原因) - 创建了新
fragment template
,创建了自定义Autor
字段 那里 - 创建了
template
,添加了我的fragment template