了解 Job Processor 在启动时如何加载作业处理程序。
Job Processor 会加载 Autodesk 和第三方作业处理程序。
第三方作业处理程序扩展
每个第三方扩展应位于扩展目录中自己的文件夹中:
%allusersprofile%\Autodesk\Vault[年份]\Extensions\
因此,例如某个作业处理程序扩展名为“JobHandlerSample”,则可能位于目录 %allusersprofile%\Autodesk\Vault [年份\Extensions\JobHandlerSample 中。
对于扩展目录内的每个文件夹,Job Processor 会检查是否存在配置文件。配置文件是可随意命名的纯文本文件,但末尾必须使用扩展名 .vcet.config。如果配置文件不存在,将无法加载扩展。以下是样例配置文件 JobHandlerSample.vcet.config 的内容:
<configuration> <connectivity.ExtensionSettings2> <assembly>JobHandlerSample</assembly> <extensionType>JobProcessor</extensionType> </connectivity.ExtensionSettings2> </configuration>
assembly 元素指定了扩展 dll 的名称。因此,在上面的样例中,扩展 dll 名为 JobHandlerSample.dll。JobProcessor 的扩展类型表明这是 Job Processor 的扩展(此目录中还有其他扩展类型:WebService 和 VaultClient)。
现已加载该扩展程序集(在本样例中为 JobHandlerSample.dll)。加载时完成以下检查:
namespace JobHandlerSample { public class JobHandlerSample : IJobHandler { public bool CanProcess(string strJobType) { return strJobType.Equals("jobhandlersample"); } public JobOutcome Execute(IJobProcessorServices context, IJob job) { return JobOutcome.Success; } } }
该部件中必须恰有一个实现 IJobHandler 的公共类型。如果不是这样,将无法加载扩展。此类型的实例已实例化。
作业处理程序配置
作业处理程序配置文件是一个 XML 文件,其中包含 Job Processor 的配置信息。它与 JobProcessor.exe 位于相同目录下(通常是 C:\Program Files\Autodesk\Vault Professional [年份]\Explorer),名为 JobProcessor.exe.config。作业处理程序配置的相关部分位于 configuration\connectivityExplorer\jobHandlers 下。在此 XML 部分中,每个 jobHandler 元素代表一个作业处理程序。jobHandler XML 元素形式如下:
<jobHandler class="jobType" handler="NameOfTypeImplementingIJobHandler"/>
位置:
因此,我们的样例扩展的有效 jobHandler 元素将为:
<jobHandler class="jobhandlersample" handler="JobHandlerSample.JobHandlerSample, JobHandlerSample"/>
在 JobProcessor.exe.config 文件中,您会发现每个 Autodesk 的内置作业处理程序已经有对应的 jobHandler 条目。如果已存在对应的 jobHandler 条目,则只会加载内置作业处理程序。内置作业处理程序 dll 位于与 JobProcessor.exe 相同的目录下。
检查作业处理程序是否已启用
上面的配置信息用于将作业类型与特定作业处理程序关联起来。关联后,将询问每个作业处理程序是否可以处理特定作业类型。作业处理程序会通过实现接口方法 IJobHandler.CanProcess 回答此问题。此时,作业处理程序应检查是否具备所需的所有条件来处理其类型的作业(例如,某些 DWF 创建作业处理程序会检查是否安装了 Inventor)。
当您查看 Job Processor 当前处理哪些作业类型时(通过使用菜单“管理”->“作业类型...”),列出的每个条目意味着该作业类型的作业处理程序已成功加载。如果条目已被选中,则表示相应的作业处理程序处于启用状态(即从 IJobHandler.CanProcess 实现返回了“True”)。若要让 Job Processor 重新询问作业处理程序是否“可以处理”,用户需要退出 Job Processor 并重新启动。
加载并询问所有作业处理程序后,Job Processor 即可开始提取队列中的作业并处理它们。
样例作业处理程序
Vault SDK 含有示例作业处理程序 JobProcessorApiSamples。有关详细信息,请单击此处。