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


浙公网安备 33010602011771号