iDempiere 开发指南 Process(iDem后台进程)及插件的开发及部署
Created by 蓝色布鲁斯,QQ32876341,blog http://www.cnblogs.com/zzyan/
iDempiere官方中文wiki主页 http://wiki.idempiere.org/zh
iDempiere 中文社区www.idempiere.org.cn
iDempiere 中文社区QQ群 65713012
本文说明如何给iDempiere创建一个Process,包括如何定义一个插件工程,建立Process,并在系统中进行调用。
本文参考的youtube视频为:https://www.youtube.com/user/evenosconsulting/videos视频下载地址(百度网盘):http://pan.baidu.com/s/1vqLRo
Process表示一段运行的程序,他的输出可以是报表,也可以不输出任何东西。
Process可以在运行过程中对其他对象进行改变,比如销售订单界面上面的Process Order就是一个Process,他将销售订单进行了Complete或者Close操作。又比如MRP运算的process,在运行的过程中生成了采购申请。
Process 也可以用来执行一系列的检查,将结果在运行的过程中输出到文件中或者直接存入数据库。
Process可以设定成为按时、按计划运行,比如每天晚上凌晨3点做MRP运算。
该文档主要分为两个大步骤
1. 在iDempiere系统中定义Process,包括使用到的参数,调用的菜单等
2. 使用eclipse开发该Process的OSGI插件,并部署到iDempiere上
下面为开发process的详细操作
- 使用System账户登录系统,进入Report & Process
- 建立一个新的process
- 给该process添加几个参数,String, Boolean, Timedate
- 创建一个Menu,对该process进行调用
- 创建Menu,同时将该menu指向刚建立好的Process
- 保存以后,退出登录,重新以GardenAdmin用户进行登录,查看菜单,发现该功能已经显示在菜单里面了
- 打开该功能,已经能够正常录入参数,说明我们的Process和Menu的系统配置正常完成。下一步可以进行Process的实际开发。
- 开发部分,开发部分使用eclipse进行开发,具体的eclipse配置请查看前面的博客:http://www.cnblogs.com/zzyan/p/4124087.html
- 在eclipse中创建一个plugin project
- 提供一个工程名字,同时选中Target to run with "Equinox"。建议将工程建立在单独的文件夹而不是workspace文件夹,这样可以将自己的代码和系统标准代码分离开来。
- 选中java6,确保使用java6的用户能够正常使用
- 新的插件创建完成以后,打开项目文件,设置项目的Manifest文件。
为其添加两个Dependencies:
org.adempiere.base和org.adempiere.plugins.utils - 创建对应的包以及process的java class文件,注意,包名和java class名字组合必须和process系统设置中的名字一样
- 更改java文件,iDempiere的process必须继承SvrProcess
process有两个函数
prepare() – 主要用于参数设置
doIt() – process的主函数,进行该process的主任务 - 具体的process实现我们后续添加
- Process建立好了以后,我们需要新建一个factory类,并将其进行注册,这样我们的插件工程在启用的时候,iDempiere的OSGI服务能够通过该注册找到我们提供的service。
新建一个package,并添加一个factory类
在这里我建立org.zzya.factories.MyProcessFactory类 - Factory类必须继承IProcessFactory。
我们同时重写其函数newProcessInstance如下 - 我们需要创建一个component definition,来告诉OSGI我们提供了这个服务
注意,eclipse需要是J2EE版本的indigo,之前我的eclipse版本为java普通版本,导致没有这个wizard,请重新下载一下开发环境,eclipse文件夹名称为eclipse-jee - 创建一个component definition
- 设置component definition的参数
其中,service.ranking为每个plugin必须设置的一个参数 - 现在我们可以回去更改MyProcess的定义,执行实际的编程操作
下面的函数中:
getParameter为继承的函数,用于获取process调用时候传入的参数
log为继承的对象,用于输出日志
addLog用于输出结果到process的结果报表 - 编写完毕以后,我们重新启动服务,并尝试调用该process
在运行时,在run -> run configuration中,选中该plugin,同时将auto-start设置为true - 运行process,设置参数
- 运行结果如下
- 查看eclipse中的log,发现log已经正常打印,说明该process插件已经正常运行
- Process运行完了以后,可以在process audit中进行查看该运行的历史记录
- Process audit中可以看到传入的参数值,以及使用addlog输出的log信息
- 下面我们进行一下扩展,看一下怎样能够在报表里面打印出料号信息,同时从报表中导航到料号界面。
更改MyProcess.java文件中的doIt(),同时添加一个getProducts函数,如下 - 重新运行,查看报表,发现报表结果显示了产品信息
- 点击超链接,可以看到界面导航到了产品product 界面
以上文档说明了怎样对idempiere系统开发及调用一个Process
iDempiere 开发指南 Process(iDem后台进程)及插件的开发及部署的更多相关文章
- 《NodeJS开发指南》第五章微博实例开发总结
所有文章搬运自我的个人主页:sheilasun.me <NodeJS开发指南>这本书用来NodeJS入门真是太好了,而且书的附录部分还讲到了闭包.this等JavaScript常用特性.第 ...
- phonegap 开发指南系列(3) ----在Eclipse中Android开发环境搭建
前提条件:已在Eclipse中安装好Android SDK 和 ADT. 1.下载PhoneGap,解压. 2.用Eclipse新建一个安卓项目. 3.将phoneGap解压包里的Android文 ...
- Knockout应用开发指南(完整版) 目录索引
http://learn.knockoutjs.com/ 所有示例和代码都在在上面直接运行预览 注意:因为它用了google的cdn加速,所要要用代_理+_翻_墙才能正常加载 使用Knockout有 ...
- Knockout应用开发指南
Knockout应用开发指南 第一章:入门 2011-11-21 14:20 by 汤姆大叔, 20799 阅读, 17 评论, 收藏, 编辑 1 Knockout简介 (Introductio ...
- Knockout应用开发指南(完整版) 目录索引(转)
使用Knockout有一段时间了(确切的说从MIX11大会宣传该JavaScript类库以来,我们就在使用,目前已经在正式的asp.net MVC项目中使用),Knockout使用js代码达到双向绑定 ...
- ASP.NET Aries 开源开发框架:开发指南(一)
前言: 上周开源了Aries开发框架后,好多朋友都Download了源码,在运行过程里,有一些共性的问题会问到. 所以本篇打算写一下简单的开发指南,照顾一下不是太看的懂源码的同学,同时也会讲解一下框架 ...
- 《Google Glass开发指南》
<Google Glass开发指南> 基本信息 作者: BestApp工作室 丛书名: 图灵原创 出版社:人民邮电出版社 ISBN:9787115349477 上架时间:2014-3-19 ...
- HarmonyOS三方件开发指南(16)-VideoCache 视频缓存
目录: 1.引言 2.功能介绍 3.VideoCache使用指南 4.VideoCache开发指南 5.<HarmonyOS三方件开发指南>系列文章合集 引言 对于视频播放器这个app大家 ...
- HarmonyOS三方件开发指南(17)-BottomNavigationBar
目录: 1.引言 2.功能介绍 3.BottomNavigationBar使用指南 4.BottomNavigationBar开发指南 5.<HarmonyOS三方件开发指南>文章合集 引 ...
随机推荐
- Linux系统管理之硬盘管理
硬盘是计算的重要组成部件之一,硬盘为操作系统提供持久话存储的功能,在Linux硬盘设备的性能和好坏可能关系到生成线的安全和用户体验等等.熟练的掌握硬盘管理相关的信息能让我们处理起这些问题来得心应手. ...
- SqlServer批量插入(SqlBulkCopy、表值参数)
之前做项目需要用到数据库的批量插入,于是就研究了一下,现在做个总结. 创建了一个用来测试的Student表: CREATE TABLE [dbo].[Student]( [ID] [int] PRIM ...
- 多线程 NSThread 的使用
NSThread简介 使用NSThread 实现多线程,需要手动管理线程的生命周期, 一.线程的创建 //1.实例方法创建,,需要手动启动线程 NSThread *thread = [[NSThrea ...
- quill 设置 初始值...
1down voteaccepted For your first issue change this: text.value = JSON.stringify(quill.root.innerHTM ...
- linux中tr的功能多多
功能 通过使用 tr,您可以非常容易地实现 sed 的许多最基本功能. 您可以将 tr 看作为 sed 的(极其)简化的变体:它可以用一个字符来替换另一个字符,或者可以完全除去一些字符.您也可以用它来 ...
- 洛谷 P3267 [JLOI2016/SHOI2016]侦察守卫(树形dp)
题面 luogu 题解 树形\(dp\) \(f[x][y]表示x的y层以下的所有点都已经覆盖完,还需要覆盖上面的y层的最小代价.\) \(g[x][y]表示x子树中所有点都已经覆盖完,并且x还能向上 ...
- 压缩感知(CS)
总结一下最近看的压缩感知(Compressed Sensiong)的内容. 它是在采样过程中完成了数据压缩的过程. 一. 将模拟信号转换为计算机能够处理的数字信号,必然要经过采样的过程.问题在于,应该 ...
- 简单探究一下window下的wifi各种东西
保存地方在哪里 C:\ProgramData\Microsoft\Wlansvc\Profiles\Interfaces HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\W ...
- C# 有关系统音量的操作
需要知道的 调音量是可以快捷键的,还可以用Winmm.dll,但是这个过于复杂了,还有左右声道,我们不需要这么复杂.还有个办法 https://stackoverflow.com/questions/ ...
- F查询和Q查询
F查询 在上面所有的例子中,我们构造的过滤器都只是将字段值与某个我们自己设定的常量做比较.如果我们要对两个字段的值做比较,那该怎么做呢? Django 提供 F() 来做这样的比较.F() 的实例可以 ...