使用 vnd.sun.star.jobs: URL 模式

From Apache OpenOffice Wiki
< Zh‎ | Documentation
Revision as of 04:29, 5 August 2008 by Jirong (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search


本节介绍通过在分发框架发出命令 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.Jobcom.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_2Job_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.XJobcom.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).
Personal tools
In other languages