- 浏览: 200111 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
carlosfu:
需要这么多资料。。
广州买房二三事 -
cutesunshineriver:
砺雪凝霜 写道看好喜欢思考的人,加油!前辈~谢谢鼓励!
2015年终盘点 -
砺雪凝霜:
看好喜欢思考的人,加油!前辈~
2015年终盘点 -
MM22:
能问下,为什么,在eclipse ACVTIVE之后,在浏览器 ...
osgi入门 -
icarus11:
我现在用的BPMsuite是11.1.1.7 但开发工具用的是 ...
Oracle BPM Suite和JDeveloper打补丁
想要做的事很简单,就是在Project下加两个菜单,第一个是流程移植,第二个是流程设置。
第一步,实现一个菜单上下文监听器。
代码里面涉及的两个Action稍后再补充说明,Action是指菜单项点击之后系统对应的动作。
第二步,加入流程移植和流程设置的两个Action。
右键选择New Gallery,选择Client Tier下面的Extension Development,分别创建两个Action。
流程移植的控制器代码如下:
流程移植的命令代码如下:
流程设置的控制器代码如下:
流程设置的命令代码如下:
第三步,请修改META-INF目录下的extension.xml,加入<context-menu-listeners>元素,在插件扩展里绑定上下文菜单的监听器。
第四步,发布成插件。
首先,把项目部署成jar包,拷贝出该jar包,在同级目录建立一个META-INF目录,在META-INF目录下,新建一个bundle.xml,代码如下:
<u:update id="bms.processdeploy">,这个id一定要跟extension.xml里的extension的id一致。jar包的名字用id的名称,如bms.processdeploy.jar。
恭喜你,你成功了,赶紧从jdeveloper的check for update里去安装这个本地插件吧!
第一步,实现一个菜单上下文监听器。
package bms.processdeploy; import oracle.ide.Context; import oracle.ide.controller.ContextMenu; import oracle.ide.controller.ContextMenuListener; import oracle.ide.controller.IdeAction; import oracle.ide.model.Element; import oracle.ide.model.Project; public class DeployContextMenuListener implements ContextMenuListener { public void menuWillShow(ContextMenu contextMenu) { Element e = contextMenu.getContext().getElement(); if (e instanceof Project) { IdeAction action = IdeAction.find(ProcessDeployCommand.actionId()); contextMenu.add(contextMenu.createMenuItem(action)); IdeAction _action = IdeAction.find(ProcessPreferenceCommand.actionId()); contextMenu.add(contextMenu.createMenuItem(_action)); } } public void menuWillHide(ContextMenu contextMenu) { } public boolean handleDefaultAction(Context context) { return false; } }
代码里面涉及的两个Action稍后再补充说明,Action是指菜单项点击之后系统对应的动作。
第二步,加入流程移植和流程设置的两个Action。
右键选择New Gallery,选择Client Tier下面的Extension Development,分别创建两个Action。
流程移植的控制器代码如下:
package bms.processdeploy; import oracle.ide.Context; import oracle.ide.Ide; import oracle.ide.controller.Controller; import oracle.ide.controller.IdeAction; import oracle.ide.extension.RegisteredByExtension; import oracle.ide.wizard.WizardManager; /** * Controller for action bms.processdeploy.processdeploy. */ @RegisteredByExtension("bms.processdeploy") public final class ProcessDeployController implements Controller { public boolean update(IdeAction action, Context context) { return true; } public boolean handleEvent(IdeAction action, Context context) { return false; } }
流程移植的命令代码如下:
package bms.processdeploy; import example.TempConvert; import example.TempConvertSoap; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import oracle.ide.Context; import oracle.ide.Ide; import oracle.ide.controller.Command; import oracle.ide.extension.RegisteredByExtension; import oracle.javatools.dialogs.MessageDialog; /** * Command handler for bms.processdeploy.processdeploy. */ @RegisteredByExtension("bms.processdeploy") public final class ProcessDeployCommand extends Command { public ProcessDeployCommand() { super(actionId()); } public int doit() { String msg = ""; String dir = context.getProject().getBaseDirectory(); File processDir = new File(dir + "/processes"); if (processDir.exists()) { for(File processFile : processDir.listFiles()) { msg = processFile.getAbsolutePath(); try { FileInputStream fis = new FileInputStream(processFile); byte[] buf = new byte[1024]; StringBuffer sb=new StringBuffer(); while((fis.read(buf))!=-1) { sb.append(new String(buf)); buf=new byte[1024]; } System.out.println(); System.out.println(sb.toString()); msg += ",流程移植成功!"; } catch (FileNotFoundException e) { msg += ",无法找到该文件!"; } catch (IOException e) { msg += ",读写异常!"; } } } else { msg = "这不是一个流程项目!"; } showMessageBox(msg); return OK; } private void showMessageBox(String msg) { String caption = "流程移植"; TempConvert tempConvert = new TempConvert(); TempConvertSoap tempConvertSoap = tempConvert.getTempConvertSoap(); msg += "\n\nWebservice调用成功,输入0,返回" + tempConvertSoap.celsiusToFahrenheit("0"); Ide.getStatusBar().setText(caption); MessageDialog.information(Ide.getMainWindow(), msg, caption, null); } /** * Returns the id of the action this command is associated with. * * @return the id of the action this command is associated with. * @throws IllegalStateException if the action this command is associated * with is not registered. */ public static int actionId() { final Integer cmdId = Ide.findCmdID("bms.processdeploy.processdeploy"); if (cmdId == null) throw new IllegalStateException("Action bms.processdeploy.processdeploy not found."); return cmdId; } }
流程设置的控制器代码如下:
package bms.processdeploy; import oracle.ide.Context; import oracle.ide.controller.Controller; import oracle.ide.controller.IdeAction; import oracle.ide.extension.RegisteredByExtension; /** * Controller for action bms.processdeploy.processpreference. */ @RegisteredByExtension("bms.processdeploy") public final class ProcessPreferenceController implements Controller { public boolean update(IdeAction action, Context context) { return true; } public boolean handleEvent(IdeAction action, Context context) { return false; } }
流程设置的命令代码如下:
package bms.processdeploy; import java.io.IOException; import oracle.ide.Ide; import oracle.ide.controller.Command; import oracle.ide.extension.RegisteredByExtension; /** * Command handler for bms.processdeploy.processpreference. */ @RegisteredByExtension("bms.processdeploy") public final class ProcessPreferenceCommand extends Command { public ProcessPreferenceCommand() { super(actionId()); } public int doit() { String url ="http://www.bmsoft.com.cn/"; try { Process op = Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url); } catch(IOException ex) { System.out.println(ex); } return OK; } /** * Returns the id of the action this command is associated with. * * @return the id of the action this command is associated with. * @throws IllegalStateException if the action this command is associated * with is not registered. */ public static int actionId() { final Integer cmdId = Ide.findCmdID("bms.processdeploy.processpreference"); if (cmdId == null) throw new IllegalStateException("Action bms.processdeploy.processpreference not found."); return cmdId; } }
第三步,请修改META-INF目录下的extension.xml,加入<context-menu-listeners>元素,在插件扩展里绑定上下文菜单的监听器。
<extension id="bms.processdeploy" version="1.0" esdk-version="1.0" rsbundle-class="bms.processdeploy.Res" xmlns="http://jcp.org/jsr/198/extension-manifest"> <name>BMS Process Deploy</name> <owner>BMS</owner> <dependencies> <import>oracle.ide</import> </dependencies> <hooks> <!-- TODO Declare functionality provided by the bms.processdeploy extension. --> <jdeveloper-hook xmlns="http://xmlns.oracle.com/jdeveloper/1013/extension"> <actions> <action id="bms.processdeploy.processdeploy"> <properties> <property name="Name">流程移植</property> <property name="SmallIcon">${OracleIcons.TO_REF}</property> <property name="LongDescription">Process Deploy</property> </properties> <controller-class>bms.processdeploy.ProcessDeployController</controller-class> <command-class>bms.processdeploy.ProcessDeployCommand</command-class> </action> <action id="bms.processdeploy.processpreference"> <properties> <property name="Name">流程设置</property> <property name="SmallIcon"></property> <property name="LongDescription">ProcessPreference</property> </properties> <controller-class>bms.processdeploy.ProcessPreferenceController</controller-class> <command-class>bms.processdeploy.ProcessPreferenceCommand</command-class> </action> </actions> <!-- Install listeners to the navigator, editor, and structure pane (explorer) context menus so that we can install menu items for our action. --> <context-menu-listeners> <site idref="navigator"> <listener-class>bms.processdeploy.DeployContextMenuListener</listener-class> </site> </context-menu-listeners> </jdeveloper-hook> </hooks> </extension>
第四步,发布成插件。
首先,把项目部署成jar包,拷贝出该jar包,在同级目录建立一个META-INF目录,在META-INF目录下,新建一个bundle.xml,代码如下:
<update-bundle version="1.0" xmlns="http://xmlns.oracle.com/jdeveloper/updatebundle" xmlns:u="http://xmlns.oracle.com/jdeveloper/update"> <!-- The id *MUST* match exactly the id in your extension.xml. --> <u:update id="bms.processdeploy"> <!-- The name of your extension as you want it to appear under the check for update menu --> <u:name>ProcessDeploy</u:name> <!-- The version *MUST* match exactly the version in your extension.xml. --> <u:version>2</u:version> <u:author>Sunny Zhou</u:author> </u:update> </update-bundle>
<u:update id="bms.processdeploy">,这个id一定要跟extension.xml里的extension的id一致。jar包的名字用id的名称,如bms.processdeploy.jar。
恭喜你,你成功了,赶紧从jdeveloper的check for update里去安装这个本地插件吧!
发表评论
-
Joda-Time
2014-04-09 16:28 967有一个需求,要找出当年内所有的节假日。 package ob ... -
OAM Logout
2014-01-14 14:54 1439在用OAM实现单点登录方案之后,发现原有的产品里的应用,如BP ... -
部署Spring3和CXF的web项目到weblogic server 11g
2013-07-10 09:59 4316eclipse里的web项目,用到了spring3和CXF,直 ... -
java解压缩包
2012-08-17 16:12 1009import java.io.File; import ja ... -
使用SAX将特定格式的XML转成CSV文件
2012-04-28 10:10 3300直接贴代码 package org.autumn.kettle ... -
同音字查询
2012-04-16 18:25 4676package org.autumn.kettle; i ... -
Hello World on RMI
2011-08-04 09:39 9661、首先定义服务器上要 ... -
舍本逐末
2011-07-29 16:55 1438今天被领导叫过去分配任务,讲了一些学习上的事,触动挺大的。 ... -
观察者模式
2011-05-12 10:26 1121在java的util包下有Observer接口和Observa ... -
最近遇到的几个面试题
2011-02-28 21:51 890一、面向对象的三大特 ... -
Alan Kay总结的OOP特性
2010-11-14 21:48 9941、一切都是对象。 2、计算通过对象间相互通信,请求其他对象执 ...
相关推荐
研究这个示例可以帮助你理解JDeveloper插件开发的具体细节,如何定义MXML组件,以及如何编写相关的Java代码。 总的来说,开发JDeveloper扩展涉及到对JDeveloper架构的理解,利用MXML和Java实现自定义功能,以及对...
10. **插件扩展**:JDeveloper拥有丰富的插件生态系统,开发者可以根据需要安装额外的插件来扩展其功能。 在"Oracle Jdeveloper 10g开发手册"中,你将找到关于这些特性和功能的详细指导,包括如何设置项目、创建和...
Oracle JDeveloper是一款强大的集成开发环境(IDE),专为构建企业级Java应用程序而设计。它包含了全方位的工具,支持从设计、编码、调试到部署的整个软件开发生命周期。这款工具的图标资源是其用户界面的重要组成...
#### 关于 Oracle JDeveloper 和其开发环境 **Oracle JDeveloper** 是一款由 Oracle 公司推出的集成开发环境(IDE),它为 Java、数据库、服务导向架构(SOA)等提供了全面的支持。这款工具自 2007 年以来已经历了...
Oracle JDeveloper 是一款由甲骨文公司(Oracle Corporation)开发的集成开发环境(IDE),主要用于构建Java应用程序,尤其是Java EE(Enterprise Edition)应用。这款工具提供了全面的开发、调试、测试和部署功能,...
Subversion(SVN)是广泛应用的一种版本控制系统,而JDeveloper是Oracle提供的一个集成开发环境(IDE),主要用于Java、Web和企业级应用的开发。本文将详细介绍如何使用JDeveloper 11g (11.1.1.6.0) 连接并操作SVN ...
1. 插件扩展:JDeveloper允许安装插件来扩展其功能,如添加对新语言的支持,或提供更专业的开发工具。 2. 版本控制:集成版本控制系统如CVS或Subversion,可以帮助团队协作,跟踪代码变更。 3. 自定义模板:创建和...
8. **插件扩展**:JDeveloper的开放架构允许开发者或社区创建自定义插件,扩展其功能以满足特定需求。 学习Oracle 9i JDeveloper,开发者需要掌握以下几个关键知识点: - **Java基础**:熟悉Java语言是使用...
这通常涉及到下载并安装XML Publisher的插件,然后在JDeveloper的首选项中配置XML Publisher的服务器连接信息。 2. **创建数据源**:在JDeveloper中,你可以定义数据源,这些数据源可以来自各种数据存储,如Oracle...
Eclipse、IntelliJ IDEA、NetBeans、Visual Studio Code和JDeveloper是Java开发中最常见的IDE。Eclipse是一款开源的IDE,拥有强大的编辑器和插件系统,支持多种编程语言。IntelliJ IDEA是一款功能强大的商业化IDE,...
9. **扩展性**:通过插件机制,开发者可以扩展JDeveloper的功能,满足特定的开发需求。 10. **帮助文档和社区**:Oracle JDeveloper 3附带详细的在线帮助文档,同时有活跃的开发者社区提供支持,解答技术问题,分享...
例如,SQL Developer中的JDeveloper插件能提供更强大的IDE功能,而Toad的Code Xpert插件则专注于增强代码质量和性能。 在实际应用中,插件的安装和配置通常是简单的,只需在IDE的扩展市场中搜索所需插件,然后按照...
1. **定义插件项目**:在Eclipse或JDeveloper等IDE中创建一个新的MAF插件项目。你需要指定插件的ID、版本、依赖项等元数据。 2. **编写插件代码**:在项目中添加所需的Java类、资源文件和配置文件。这些类可以实现...
JDeveloper Checkstyle Plugin 是一款专门为Oracle的JDeveloper集成开发环境(IDE)设计的开源插件。这款插件引入了Checkstyle工具的功能,Checkstyle是一个著名的静态代码分析工具,用于检查Java源代码是否符合特定...
当我们想要在Eclipse中进行Activiti的开发时,通常需要安装相关的插件来提供支持。本文将详细介绍如何解决在高版本Eclipse上安装Activiti插件时遇到的"requires 'org.eclipse.emf.transaction 1.4.0' but it could ...
NetBeans尤其在Web和移动应用开发方面表现出色,且具有良好的可扩展性,允许开发者通过插件定制工作环境。 4. Borland的JBuilder:JBuilder是专为Java开发设计的强大IDE,尤其适合EJB和服务器端应用开发。它支持...
Java插件Glassfish-JDeveloper是针对Java开发人员的重要工具,它允许JDeveloper 12.1.3集成Glassfish服务器,以实现更高效、无缝的开发和部署流程。Glassfish是一个开源的应用服务器,由Oracle公司维护,支持Java EE...