在WorkflowData对象中因为不像Custom Module那样可以使用Batch的XMLExport方法,很多时候只能用DOM结构变成,虽然这样的结构很烦琐,不过速度确实快。
我设计的一个脚本引擎(基于Workflow Agent)多数操作就是直接操作ACDataElement来完成的。
WorkflowData对象中有两个方法:
从上面可以看到,使用这两个方法可以访问批次设计时和运行时间的各种数据。
如下的例子:
遍历运行时的目录:
我设计的一个脚本引擎(基于Workflow Agent)多数操作就是直接操作ACDataElement来完成的。
WorkflowData对象中有两个方法:
方法 | 参数 | 备注 |
ExtractSetupACDataElement |
lHints as Long |
这个方法为批处理类返回 ACDataElement API 对象 |
ExtractRuntimeACDataElement |
lHints as Long |
这个属性为批处理数据返回 ACDataElement API 对象。 属性是只读的,不过你可以自由修改 ACDataElement API 允许的任何数据 |
如下的例子:
遍历运行时的目录:
1foreach (ACDataElement folder in ACWorkflowData.ExtractRuntimeACDataElement(0).FindChildElementByName("Batch").FindChildElementByName("Folders").FindChildElementsByName("Folder"))
2{
3 if (folder["FolderClassName"].Contains("申请人资料文件夹"))
4 runtimeCount++;
5}
获取设计时批次类自定义字符串:2{
3 if (folder["FolderClassName"].Contains("申请人资料文件夹"))
4 runtimeCount++;
5}
protected string GetSetupBatchClassCustomStorageString(string name)
{
try
{
return ACWorkflowData.ExtractSetupACDataElement(0).FindChildElementByName("BatchClasses").FindChildElementsByName("BatchClass")[1].FindChildElementByName("BatchClassCustomStorageStrings").FindChildElementByAttribute("BatchClassCustomStorageString", "Name", name)["Value"];
}
catch
{
return string.Empty;
}
}
获取文件夹或者文档的索引字段的数据:{
try
{
return ACWorkflowData.ExtractSetupACDataElement(0).FindChildElementByName("BatchClasses").FindChildElementsByName("BatchClass")[1].FindChildElementByName("BatchClassCustomStorageStrings").FindChildElementByAttribute("BatchClassCustomStorageString", "Name", name)["Value"];
}
catch
{
return string.Empty;
}
}
1/// <summary>
2/// 获取parent对象的索引字段数据,这里parent可能是Folder, Document等
3/// </summary>
4/// <param name="parent">父对象</param>
5/// <param name="name">字段名字</param>
6/// <returns>值</returns>
7protected string GetRuntimeIndexField(ACDataElement parent, string name)
8{
9 try
10 {
11 return parent.FindChildElementByName("IndexFields").FindChildElementByAttribute("IndexField", "Name", name)["Value"];
12 }
13 catch
14 {
15 return string.Empty;
16 }
17}
18/// <summary>
19/// 获取parent对象的索引字段数据,这里parent可能是Folder, Document等
20/// </summary>
21/// <param name="parent">父对象</param>
22/// <param name="index">索引</param>
23/// <returns>值</returns>
24protected string GetRuntimeIndexField(ACDataElement parent, int index)
25{
26 try
27 {
28 return parent.FindChildElementByName("IndexFields").FindChildElementsByName("IndexField")[index]["Value"];
29 }
30 catch
31 {
32 return string.Empty;
33 }
34}
2/// 获取parent对象的索引字段数据,这里parent可能是Folder, Document等
3/// </summary>
4/// <param name="parent">父对象</param>
5/// <param name="name">字段名字</param>
6/// <returns>值</returns>
7protected string GetRuntimeIndexField(ACDataElement parent, string name)
8{
9 try
10 {
11 return parent.FindChildElementByName("IndexFields").FindChildElementByAttribute("IndexField", "Name", name)["Value"];
12 }
13 catch
14 {
15 return string.Empty;
16 }
17}
18/// <summary>
19/// 获取parent对象的索引字段数据,这里parent可能是Folder, Document等
20/// </summary>
21/// <param name="parent">父对象</param>
22/// <param name="index">索引</param>
23/// <returns>值</returns>
24protected string GetRuntimeIndexField(ACDataElement parent, int index)
25{
26 try
27 {
28 return parent.FindChildElementByName("IndexFields").FindChildElementsByName("IndexField")[index]["Value"];
29 }
30 catch
31 {
32 return string.Empty;
33 }
34}