zoukankan      html  css  js  c++  java
  • 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的详细操作

    1. 使用System账户登录系统,进入Report & Process
    2. 建立一个新的process
    3. 给该process添加几个参数,String, Boolean, Timedate



    4. 创建一个Menu,对该process进行调用
    5. 创建Menu,同时将该menu指向刚建立好的Process
    6. 保存以后,退出登录,重新以GardenAdmin用户进行登录,查看菜单,发现该功能已经显示在菜单里面了
    7. 打开该功能,已经能够正常录入参数,说明我们的Process和Menu的系统配置正常完成。下一步可以进行Process的实际开发。
    8. 开发部分,开发部分使用eclipse进行开发,具体的eclipse配置请查看前面的博客:http://www.cnblogs.com/zzyan/p/4124087.html
    9. 在eclipse中创建一个plugin project
    10. 提供一个工程名字,同时选中Target to run with "Equinox"。建议将工程建立在单独的文件夹而不是workspace文件夹,这样可以将自己的代码和系统标准代码分离开来。
    11. 选中java6,确保使用java6的用户能够正常使用
    12. 新的插件创建完成以后,打开项目文件,设置项目的Manifest文件。
      为其添加两个Dependencies:
      org.adempiere.base和org.adempiere.plugins.utils

    13. 创建对应的包以及process的java class文件,注意,包名和java class名字组合必须和process系统设置中的名字一样
    14. 更改java文件,iDempiere的process必须继承SvrProcess
      process有两个函数
      prepare() – 主要用于参数设置
      doIt() – process的主函数,进行该process的主任务
    15. 具体的process实现我们后续添加
    16. Process建立好了以后,我们需要新建一个factory类,并将其进行注册,这样我们的插件工程在启用的时候,iDempiere的OSGI服务能够通过该注册找到我们提供的service。
      新建一个package,并添加一个factory类
      在这里我建立org.zzya.factories.MyProcessFactory类
    17. Factory类必须继承IProcessFactory。
      我们同时重写其函数newProcessInstance如下
    18. 我们需要创建一个component definition,来告诉OSGI我们提供了这个服务
      注意,eclipse需要是J2EE版本的indigo,之前我的eclipse版本为java普通版本,导致没有这个wizard,请重新下载一下开发环境,eclipse文件夹名称为eclipse-jee
    19. 创建一个component definition
    20. 设置component definition的参数
      其中,service.ranking为每个plugin必须设置的一个参数

    21. 现在我们可以回去更改MyProcess的定义,执行实际的编程操作
      下面的函数中:
      getParameter为继承的函数,用于获取process调用时候传入的参数
      log为继承的对象,用于输出日志
      addLog用于输出结果到process的结果报表
    22. 编写完毕以后,我们重新启动服务,并尝试调用该process
      在运行时,在run -> run configuration中,选中该plugin,同时将auto-start设置为true
    23. 运行process,设置参数
    24. 运行结果如下
    25. 查看eclipse中的log,发现log已经正常打印,说明该process插件已经正常运行
    26. Process运行完了以后,可以在process audit中进行查看该运行的历史记录
    27. Process audit中可以看到传入的参数值,以及使用addlog输出的log信息

    28. 下面我们进行一下扩展,看一下怎样能够在报表里面打印出料号信息,同时从报表中导航到料号界面。
      更改MyProcess.java文件中的doIt(),同时添加一个getProducts函数,如下
    29. 重新运行,查看报表,发现报表结果显示了产品信息
    30. 点击超链接,可以看到界面导航到了产品product 界面

     

    以上文档说明了怎样对idempiere系统开发及调用一个Process

  • 相关阅读:
    程序员们,让你的孩子当个网页工程师吧!
    罗永浩:锤子手机一共卖了12万部(但计划50万)……我已经交出微博密码……(老罗想通了:-))
    母婴市场两万亿,我独钟情于尿布?已获千万级天使的垂直电商“尿布师”,其商业逻辑是这样的
    梵高眼里的《星空》究竟有多美,利用机器学习和图像处理来扩展整幅画的全局景象~
    编程王道,唯“慢”不破
    BAT,你好!字幕组,再见!——也许要跟美剧说再见了~
    Google想出了一个决定人员晋升的算法,然后就没有然后了......
    程序员需要经纪人吗?10x 最好的程序员其生产力相当于同行的 10 倍~
    比特币 Bitcoin 是什么,我勒个去,哈耶克果然超前——货币的非国有化,容我思量一下【转载+整理】
    2014年10月底/终于/HTML5定稿……/技术从来不会成为发展的绝对瓶颈/反而商业成了无法逾越的鸿沟【转载+整理】
  • 原文地址:https://www.cnblogs.com/zzyan/p/4159117.html
Copyright © 2011-2022 走看看