`
liugang594
  • 浏览: 987576 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Eclipse中Job API使用总结如下三

阅读更多

1. 使用job的一个好处就是可以在后台运行。

但是如果不给用户于提示的话,很多时候会让用户很困惑,这就有必要增加回显。上面又说了,提供回显会增加复杂性。下面就是解决这个问题的方案!记得在第一部分,说过一个job有三个级别:systemuserdefault。只要不是system级的,就会有回显给用户。最常见的就是工作台右下角的进度显示:

图一

如果是用户级的,进一步,我们可以有一个进度对话框:

图二

用户级时,如果用户没有选择在后台运行,那么很容易判断工作完成,因为对话框会关闭。但是如果运行了在后台运行,或者是缺省级的,那又怎么办呢?当然最简单的,我们可以在progress view里查看:

 

图三
但是不能期待用户总是盯着这个看。这里给出解决方案,我们让工作台记住我们完成的结果,当点击图标时会弹出这个结果,示例如下:

 

 

首先定义这个job Job job = new Job("Online Reservation") { protected IStatus run(IProgressMonitor monitor) { // Make a reservation // ... setProperty(IProgressConstants.ICON_PROPERTY, Activator .getImageDescriptor("icons/sample.gif")); if (isModal(this)) { // The progress dialog is still open so // just open the message showResults(); } else { setProperty(IProgressConstants.KEEP_PROPERTY, Boolean.TRUE); setProperty(IProgressConstants.ACTION_PROPERTY, getReservationCompletedAction()); } return Status.OK_STATUS; } }; job.setUser(true); job.schedule();

 isModel()方法如下: public boolean isModal(Job job) { Boolean isModal = (Boolean) job .getProperty(IProgressConstants.PROPERTY_IN_DIALOG); if (isModal == null) return false; return isModal.booleanValue(); }

 

getReservationCompletedAction()方法如下:   protected static Action getReservationCompletedAction() { return new Action("View reservation status") { public void run() { MessageDialog.openInformation(Display.getDefault() .getActiveShell(), "Reservation Complete", "Your reservation has been completed"); } }; }

 

showResults()方法如下:    protected static void showResults() { Display.getDefault().asyncExec(new Runnable() { public void run() { getReservationCompletedAction().run(); } }); }

 

更多的用法,可以参见job的帮助和IProgressConstants常量的用法!这里当使用对话框等待时,当任务结束后,信息对话框弹出有问题!有一个非法管理状态异常!大家可以试试!最后运行结果大致如下:

 

图四

OK出现对话框!

 

2. job进行分组。

有可以多个job都同属于一个逻辑任务,这时可以对这些job进行分组,使用job的如下方法:setProgressGroup()具体的看job的帮助!

 

3. 保护数据的完整性

上面介绍的都是一些互斥访问的实现,没有讲到数据完整性的保护!在eclipseorg.eclispe.core.runtime插件中提供了一种锁的机制,用来保护数据在被操作时不会被打断。使用方式如下:private static ILock lock = Platform.getJobManager().newLock(); try { lock.acquire(); // Access or modify data structure } finally { lock.release(); }

 

 注意,try-finally块是必须的,用于确保在任何时候锁都能够被释放!这里也提示一下,在请求资源锁时,也应该做同样的事情!  好,以上就是所有的总结的内容!

  • 描述: 图一
  • 大小: 7.7 KB
  • 描述: 图二
  • 大小: 2.2 KB
分享到:
评论
1 楼 ruoyelj 2008-07-18  
好好研究了下,不好意思不撒花了,嘿嘿。

相关推荐

    Eclipse集成JBPM

    案例中使用的版本为jBPM-JPDL3.2.2。 - **下载地址**: [http://labs.jboss.com/jbossjbpm/jbpm_downloads/](http://labs.jboss.com/jbossjbpm/jbpm_downloads/) - **下载内容**: jPDL Suite版,该版本包含了完整的...

    sqoop2 java API从oracle导数据到HDFS开发总结新

    本例中使用的版本为`sqoop-1.99.7-bin-hadoop200.tar.gz`。按照官方文档指导进行安装,具体可参考链接:[http://sqoop.apache.org/docs/1.99.7/admin/Installation.html]...

    使用elipse连接Hadoop

    标题“使用Eclipse连接Hadoop”意味着我们要探讨的是如何在流行的Java开发环境Eclipse中配置和使用Hadoop相关的工具,以便开发和调试MapReduce程序。Hadoop是一个分布式计算框架,而Eclipse则是一个广泛用于Java开发...

    java kettle api pom maven jar

    通过导入这些文件到你的IDE(如IntelliJ IDEA或Eclipse),你可以运行这个示例,了解如何在实际项目中使用Kettle API。 总之,通过Java Kettle API,开发者可以将Pentaho Data Integration的功能无缝集成到Java应用...

    Quartz总结

    例如,一个简单的Job实现可能如下: ```java import org.quartz.Job; import org.quartz.JobDataMap; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class ...

    kettle 链接 mqtt 协议所需包

    4. **文档和教程**:为了帮助用户理解如何在Kettle中使用MQTT,压缩包可能包含详细的操作指南、API参考或者示例工作流,说明如何创建和配置MQTT连接,以及如何在ETL过程中使用MQTT数据源和目标。 5. **示例项目**:...

    hadoop idea插件

    Hadoop Idea插件是专门为开发者设计的,旨在提供在Idea中直接操作和管理Hadoop集群的功能,类似于Eclipse中的HDFS插件,使得开发和调试Hadoop应用程序更为便捷。 安装Hadoop Idea插件的过程如下: 1. 打开IntelliJ...

    activiti.zip

    在 IDE(如 IntelliJ IDEA 或 Eclipse)中,选择“新建项目”并选择 Maven 项目模板。填写项目的 Group ID、Artifact ID 和 Version,这些信息将定义项目的唯一标识。 接着,我们需要在项目的 `pom.xml` 文件中添加...

    java代码-大数据1班 01 陈瑞杰

    例如,它可能指导学生如何设置Java开发环境(JDK),如何使用集成开发环境(IDE)如IntelliJ IDEA或Eclipse,以及如何运行和理解`main.java`中的代码示例。 在大数据处理方面,Java以其强类型、面向对象的特性,...

    Smart2.0 用户手册

    - **REST 服务**:支持 RESTful API 的构建,便于与其他系统进行集成。 - **Ajax 数据交互**:支持通过 Ajax 获取服务端数据并进行界面渲染,提高了用户体验。 #### 二、开发工具准备与环境搭建 - **Java虚拟机...

Global site tag (gtag.js) - Google Analytics