compiere工作流

and_zej

贡献于2017-03-21

字数:4736 关键词: ERP/CRM

1.工作流程概括 Compiere有3种类型的工作流,它们是:一般工作流、单据处理工作流、单据值工作流。 2.代码结构 工作流的代码存放在两个位置 1. COMPIERE_SOURCE\client\Src\org\compiere\apps\wf 放在client的工作流相关界面布局,如Workflow Panel,Workflow Activity Form,Workflow Icon,WorkflowNode etc. 2. COMPIERE_SOURCE\base\src\org\compiere\wf base的代码实现工作流处理。 3.工作流程应用 1. 一般工作流 一般工作流程:用户从菜单中启动它们。提供完成一项任务的导向图及逐步的指导。如:业务伙伴设置、初始化实体设置。使用户快速对系统模块的了解,以及导航,快速定位到窗体,功能。 一般工作流,Workflow Type选择”General”,代表是一个一般工作流,提供导航以及逐步指导。选择Start Node,表示工作流从哪个节点开始处理。 节电动作可能是Window,Form,Process,Report等用户常用的功能,儅DocAction是”User Window”,会弹出window字段供选择,便可以导航到这个window。Form,Process,Report…亦是同样道理。 节点的Image field,可以选择一个图片,默认情况下是简单的compiere图片,如图: 如果要显示自定义的图片,除了在Image Field选择相应图片外,还需扩展Compiere代码,使它支持且显示这些图片。 代码修改: 实现读取图片,绘制图片,调整图片,以及节点文字显示位置: WFIcon类 添加Image私有变量,参数为Image的构造函数以及绘制图片的PaintIcon(). WFNode类 修改WFNode构造函数,使它能读取节点上Image field的图片字段,并赋给m_icon变量。 把节点文字显示在中间位置 MImage类 读取图片,供WFNode调用。 2. 单据处理工作流 单据处理工作流程:当处理单据时被启动。这些工作流程无形的应用于销售订单,在需要审批的情形下,您可扩展这些工作流类型。示例:物价审批(当订单超过某特定金额时)。 在Compiere中,在SO,PO,Invoice,Shipment,MR等window,都会有一个Complete Button,用于处理及审批单据。点击Complete Button,会弹出Document Action Dialog,确认要进行的单据操作后,,自动激活工作流,根据文档动作,做相应的操作. 1〉 选择单据动作 对应的class是VdocAction.java public class VDocAction extends CDialog implements ActionListener 它是一个Dialog,提供Document Action供选择。 每个MWF.java可能都有各自不同的Document Action,这个方法设置各自文档状态可选则的Document Action,以及默认的Document Action. 2〉 定义一个可以激发工作流的类。 现在假设我们建了一张新的table,我们可以定义自己Complete Button, 1〉 数据库设定 首先,在数据库中,必须有3个列: DocAction , char(2), Processed , char(1) default = N , DocStatus, char(2) DocAction 是一个Button ,用于发起单据处理动作. 单据操作及编码对照表: DocStatus是代表当前单据状态。 单据状态的编码对照表: 而Processed 则是代表这张单是否complete ,当processed = Y, 整个window 的fields都会Read Only, 除了在table & column 中设定为Away undateAble 为true的fields. 2>DocAction [FIELD]详细设定 然后,我们要定义一个Process,用于啓动工作流。并把Process赋给DocAction [FIELD] 在Report & Process,有一个Workflow field,这里选择的workflow,是决定单据运行的workflow,对于一个新的table,需定义自己的workflow. 2〉 DocAction [FIELD]的Process Process激活用于工作流,最主要的设定是Workflow [FIELD]: 3〉 新建workflow,Node,Transation. Worlflow的节点有(Start), (DocPrepare), (DocComplete), (DocAuto), 图示文档状态以及文档节点。 Node Transtion.党Node split [FIELD]等于’XOR’, 代表只执行第一个transtion,,等于’AND’,代表执行所有的transtion。 同时,Compiere提供绘制Workflow的工具:Workflow Editor,可以方便地绘制workflow节点对应关系。 4〉 定义PO Class 一个支持工作流的java,必须实现DocAction接口。如: public class Morder extends X_C_Order implements DocAction 需实现DocAction中的一些方法 public String getDocumentInfo() 返回单据文档信息,如单据类型和单据号。 public boolean unlockIt() 解锁,党前单据的处理结束,设Processing等于false. public boolean processIt (String processAction) 文档处理的公用方法,传入文档动作,调用相应文档处理方法。 public File createPDF () public File createPDF (File file) 创建PDF文件。 public int getDoc_User_ID() 返回单据处理人。 public int getC_Currency_ID() 返回单据货币币别。 public boolean invalidateIt() 对应单据操作的使无效(IN) ,处理成功,则返回true。 public boolean voidIt() 使单据无效, 对应单据操作的None(--),返回单据处理状态。 public boolean closeIt() 对应单据操作的关闭(CL) ,返回单据处理状态。 public boolean reverseCorrectIt() 对应单据操作的逆向调整(RC) ,返回单据处理状态。 public boolean reverseAccrualIt() 对应单据操作的逆向增长(RA) ,返回单据处理状态。 public boolean reActivateIt() 对应单据操作的重新激活(RE) ,返回单据处理状态。 public String prepareIt() 对应单据操作的准备(PR),返回单据处理状态。 public String completeIt() 对应单据操作的完成(CO) ,返回单据处理状态。 public boolean approveIt() 对应单据操作的批准(AP) ,处理成功,则返回true。 public String getProcessMsg() 返回单据处理结果,消息提示会显示在状态栏。 public void setDocAction (String DocAction) public void setDocAction (String DocAction, boolean forceCreation) 设定单据处理动作, public String getSummary() 纪录文档审批信息,如单据号,批准金额等。 public BigDecimal getApprovalAmt() 返回批准的单据金额。 public String getDocStatusName() 返回文档状态名(Name). public boolean rejectIt() 对应单据操作的拒绝(PJ) ,处理成功,则返回true。 public String getDocumentNo() 返回单据DocumentNo. processIt()是一个公用方法,是文档动作执行的入口,一个工作流的激活,从MWFActivity.java开始。 在这个java中,核心的方法是performWork() 工作流节点动作决定工作流的走向,最常用的节点动作,也是我们在做单据处理工作流使用的节点动作是DocumentAction,在处理DocumentAction动作时,会调用DocAction.processIt()方法,根据单据操作动作,执行处理操作。 以上代码调用DocAction.processs()方法,相关实现DocAction的MWF.java定义ProcessIt()方法: DocumentEngine.java是所有MWF.java的公用类,当然也实现DocAction,在这个java定义所有MWF.java的公用处理方式,在它的ProcessIt()验证及分支文档操作。 完成单据处理,Workflow Process window记下了详细的process步骤: Text Message记下单据操作处理信息: 工作流节点处理: 3. 单据值工作流 单据值工作流:当任意实体对象满足用户事先定义的条件时,工作流被自动启动。示例:信用审批(针对新的业务伙伴)。 单据值工作流,Workflow Type选择Document Value,便可以写Document value logic. 只要满足Document value logic,这个workflow将啓动。如Document value logic为 @Updated@=@Created@ & @C_DocType_ID@=1000100,意思是对出库单的单据执行的文档操作,workflow将执行。 Workflow Responsible是工作流负责人。 Start Node指第一个要执行的节点。与Node tab对应。 可以有多个节点,因爲可能需要多个部门人员审批,或者发给多个部门。 节点的Workflow Responsible非常重要,指节点的负责人,先看下图的节点,负责人是财物总监,Action是User choice,儅选择User choice会要求选择一个column,这个column的value将提供给用户选择。如IsApproved要求用户选择Yes/No,决定用户是否同意审批单据。 节点负责人是财务总监,也就是工作流会要求财务总监审批。 下一个节点: 下一个节点的Action是User Window,并选择了一个window,节点负责人是物控部。还可以选择User Form,User Process等等,党财务总监审批完这张,物控部的所有人员都会收到 审批结果,并且有一个window的按钮,点击按钮可以打开财务总监审批的单据。 节点负责人是整个部门的人员。 下列人员会收到审批结果,他们都是这个节点负责人。 审批一张单据。 现在创建一张出库单,点击Compiere Button,出库单的工作流被激活,提示出库单需通过财务总监(陈洁)审批。未经过财务总监审批之前,单据是不能进行文档操作的。 财务总监登入系统后,窗口提示活动工作流数量。 财务总监可以点按钮,打开需审批的单据,经过仔细审核,选择Yes/No,也就是是否同意审批,党选择了Yes,单据审批自动完成,并把审批结果发到物控部人员。 物控部的人员会收到审批结果,并通过查看单据明细以及状态。 审批完成,财务部门同意审批,系统自动审批单据。

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享文档获得金币 ]
0 人已下载

下载文档

相关文档