使用 vnd.sun.star.jobs: URL 模式
本节介绍通过在分发框架发出命令 URL 来执行作业的必要步骤。根据协议处理器机制,专门的 URL 模式已在 OpenOffice.org 中实现。它为 URL 模式 "vnd.sun.star.jobs:*
" 注册,使用了以下语法:
vnd.sun.star.job:{[event=<name>]}{,[alias=<name>]}{,[service=<name>]}
vnd.sun.star.job: URL 的元素 | |
---|---|
event=<name>
|
字符串型。包含一个事件字件串,此字符串也可用作接口方法 <idlml>com.sun.star.task.XJobExecutor:trigger</idlml>() 的参数。它与配置软件包 org.openoffice.Office.Jobs 中的 Events 集的节点名称相对应。使用 vnd.sun.star.jobs: URL 的 event 参数将启动在配置中为此事件注册的所有作业。
注意:已禁用的作业(即用户时间戳比管理员时间戳新的作业)不会被事件 URL 触发。 |
alias=<name>
|
字符串型。包含已配置作业的别名。作业执行 API 不使用此名称。它是配置软件包 org.openoffice.Office.Jobs 中 Jobs 集的节点名称。使用 vnd.sun.star.jobs: URL 的 alias 部分仅启动请求的作业。
|
service=<name>
|
字符串型。包含已配置的或未配置的 com.sun.star.task.Job 或 com.sun.star.task.AsyncJob 的服务的 UNO 实现名称。如果作业不使用配置数据工作或者在其自身上实现必要的配置,就不必在配置中注册此类作业。 |
可以组合元素,以便可以使用单个 URL 一次启动多个作业。例如,您可以分发一个 URL vnd.sun.star.jobs:event=e1,alias=a1,event=e2 ,...。但是,应谨慎使用一次启动多个作业的 URL,因为不会检查是否存在双重请求或并发请求。如果服务是异步设计的,它将与另一个同步作业并行运行。如果这两个服务在同一区域工作,可能会产生竞争的情况,二者必须同步它们的工作。常规的作业执行机制不提供此功能。
以下是配置软件包 org.openoffice.Office.Jobs 的配置文件,其中显示了两个作业,它们是为不同事件注册的:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE oor:component-data SYSTEM "../../../../component-update.dtd"> <oor:component-data oor:name="Jobs" oor:package="org.openoffice.Office" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <node oor:name="Jobs"> <node oor:name="Job_1" oor:op="replace"> <prop oor:name="Service"> <value>vnd.sun.star.jobs.Job_1</value> </prop> <node oor:name="Arguments"> <prop oor:name="arg_1" oor:type="xs:string" oor:op="replace"> <value>val_1</value> </prop> </node> </node> <node oor:name="Job_2" oor:op="replace"> <prop oor:name="Service"> <value>vnd.sun.star.jobs.Job_2</value> </prop> <node oor:name="Arguments"/> </node> </node> <node oor:name="Events"> <node oor:name="onFirstVisibleTask" oor:op="fuse"> <node oor:name="JobList"> <node oor:name="Job_1" oor:op="replace"> <prop oor:name="AdminTime"> <value>01.01.2003/00:00:00</value> </prop> <prop oor:name="UserTime"> <value>01.01.2003/00:00:01</value> </prop> </node> <node oor:name="Job_2" oor:op="replace"/> </node> </node> </node> </oor:component-data>
第一个作业可以用以下属性描述:
"Job_1" 的属性 | |
---|---|
alias
|
Job_1
|
UNO implementation name
|
vnd.sun.star.jobs.Job_1
|
activation state
|
作业执行已禁用(因为其 AdminTime 比其 UserTime 早) |
own configuration
|
包含一个 string 条目 arg1,值为 "val1 "
|
event registration
|
作业已为事件字符串 "onFirstVisibleTask " 注册
|
第二个作业可以用这些属性描述:
Properties of "Job_2" | |
---|---|
alias
|
Job_2
|
UNO implementation name
|
vnd.sun.star.jobs.Job_2
|
activation state
|
作业执行已启用(因为它使用 AdminTime 和 UserTime 的默认值) |
own configuration
|
没有注册的自己的配置条目 |
event registration
|
作业已为事件字符串 "onFirstVisibleTask " 注册
|
以下示范使用的实例适用于所有可能的 vnd.sun.star.job: URL。这里显示的并不是所有可能的方案。作业分发的使用方式有多种,作业的组合可以产生不同的结果:
vnd.sun.star.job:event=onFirstVisibleTask
此 URL 仅启动 Job_2
,Job_1
被标记为 DISABLED
,因为其 AdminTime
戳早于其 UserTime
戳。
作业通过 Environment 子列表使用环境信息进行初始化,如 编写 UNO 组件 - 将组件集成到 OpenOffice.org - 作业 - 初始化 所述。可选的分发参数在 DynamicData
中传送,常规的配置数据,包括事件字符串,在 Config
中接收。但是,Job_2
不使用自己的配置数据在 JobConfig
中初始化,因为 Job_2
不是使用这些信息配置的。另一方面,Job_2
可以在完成工作后返回数据,这些数据将写回到配置中。
而且,作业实例可以预期来自 Environment
子列表的 Frame
属性指向要在其中执行分发请求的框架。
vnd.sun.star.job:alias=Job_1
这将只启动 Job_1
。它使用环境进行初始化,还可以选择使用分发参数、常规配置数据和自己的配置数据进行初始化。但是,这里未设定事件名称,因为此作业被直接触发,并未使用事件名称。
vnd.sun.star.job:service=vnd.sun.star.jobs.Job_3
vnd.sun.star.jobs.Job_3
未在作业配置软件包中注册。但是,如果此实现使用全局服务管理器注册,并且如果它提供 com.sun.star.task.XJob 或 com.sun.star.task.XAsyncJob 接口,则它将由此 URL 执行。如果这两个接口都存在,则同步版本优先。
给定的 UNO 实现名称 vnd.sun.star.jobs.Job_3
直接用于 UNO 服务管理器中的创建。此外,此作业实例仅使用环境进行初始化,并可能使用可选的分发参数,因为该作业没有配置数据可以使用。
Content on this page is licensed under the Public Documentation License (PDL). |