普元流程开发手册_第1页
普元流程开发手册_第2页
普元流程开发手册_第3页
普元流程开发手册_第4页
普元流程开发手册_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、普元流程开发手册浪潮通信 OSS综合业务中心2011年6月1熟悉流程22数据库建表52.1建表目的52.2表字段52.3Sequence63WSH生成代码63.1生成代码63.2修改代码84设计BPS流程124.1配置BPS124.2创建BPS流程图134.3添加活动和连接线154.4提交BPS流程234.5子流程265应用流程设计器设计流程285.1创建流程信息285.2字典配置305.2.1环节分类305.2.2流程分类325.3角色库325.4环节库345.5表单库管理365.6应用流程设计器画出流程395.7提交流程445.8表单定制455.9角色人员486制作发起页面507EXT派发

2、抄送人员选择对话框说明518初始化工单页面519发起流程或者完成当前环节5210环节信息处理5311环节驳回处理5512工单详情页面571 熟悉流程通过Visio画出业务的流程图,充分理解流程的流转过程,流程环节,角色等信息(如图1-1)。(如图1-1)2 数据库建表2.1 建表目的存储流程发起页面的字段内容,供流程详情页面使用。(如图2-1)2.2 表字段Ø 表命名规范:以T_BNS_为前缀。Ø 工单发起页面中除资源服务外的所有字段(上传附件另外存储这里不作考虑)。Ø 必须包括的字段l IDNUMBER not null表主键l FORM_NOVARCHAR2(

3、40)工单编号l FLOW_IDNUMBER工单流水号l PIDNUMBER流程实例号l STATENUMBER 工单状态l TITLEVARCHAR2(200)工单主题l START_TIMEDATE派单时间l OWNER_IDNUMBER派单人IDl OWNER_NAMEVARCHAR2(50)派单人l DEPT_IDNUMBER派单人部门IDl DEPT_NAMEVARCHAR2(50)派单人部门名称l CELL_PHONEVARCHAR2(40)派单人联系电话l FINISH_TIMEDATE要求完成时间(可选)l COMPANY_ID NUMBER公司IDl COMPANY_NAME

4、VARCHAR2(50)公司名称l ACCEPT_TIMEDATE受理时限l REPLY_TIME DATE回复时限其中:FORM_NO是工单发起页面显示的工单编号。 FLOW_ID是工单的唯一标示。 PID是bps流程引擎生成的流程实例号。 STATE显示工单流程状态 ACCEPT_TIME是规定时间必须受理。 REPLY_TIME是规定时间必须处理完。2.3 Sequence规则:表名+seq。3 WSH生成代码3.1 生成代码3.1.1 参考WSH文档3.1.2 注意事项3.2 修改代码以基站入网流程为例:Ø 增加com.inspur.app.btsIcess包。&#

5、216; 修改TbnsBtsIn.javal 增加属性templateName,processinstDesc。同时增加get、set方法。l 增加clone();public Object clone()tryTbnsBtsIn cloneObject = (TbnsBtsIn)super.clone();return cloneObject;catch(CloneNotSupportedException ex)throw new InternalError();Ø 修改BaseTbnsBtsIn.javal 更改继承的BasePojo为com.inspur.app.basic.

6、pojo.BasePojo。l 如有如下字段,字段类型必须符合,不符合的手工修改:² flowId Long型² formNo String型² title String型² state Long型² ownerName String型² ownerId Long型² companyName String型² companyId Long型² deptName String型² deptIdLong型² startTimejava.util.Date型² replyTimej

7、ava.util.Date型同时修改hbm配置文件。Ø 修改TbnsBtsInAction.javal 更改继承关系,改为继承com.inspur.app.basic.action.AbstractTBnsAction类。l 更改getModel()方法的返回值为Object。l 实现AbstractTBnsAction的 getTbnsService()方法返回service实现类;如:service实现类为 tbnsBtsInService;public Object getTbnsService() return tbnsBtsInService;l 增加流程模板名:prote

8、cted final static String TEMPLETNAME = "com.inspur.app.btsIcess.btsIn"Ø 更改service层TbnsBtsInServiceImpl.javal 更改继承关系,继承com.inspur.app.basic.service.AbstractCommonTBnsService类。l 修改生成的action配置文件名,添加前缀struts-。l 修改struts.xml加入新生成的action配置文件。l 修改生成的spring配置文件。4 设计BPS流程4.1 配置BPS图4-1如上图所

9、示配置好IP地址和端口号4.2 创建BPS流程图(如图4-2)Ø 新建bps流程文件:l 流程文件创建在各流程的对应的process包下(如图4-3)。(如图4-3)l 流程名称为英文也是流程文件名。流程文件包路径+流程名称在系统流程设计器中还要用到。Ø 设置流程属性:l 鼠标双击编辑区空白处,弹出流程属性设置对话框。一般只需填写显示名称、作者、描述(如图4-4)。(如图4-4)4.3 添加活动和连接线Ø 根据Visio流程图添加流程环节:l 增加流程活动:根据要添加的流程环节性质选取图元,从选用面板拖动到流程编辑区项目中常用活动流程编辑器中图元对应资源文件人工活

10、动Jsp/html文件自动活动Java方法子流程流程文件注意:² 由于在新建业务流程时,"开始图元"和"结束图元"默认已经生成,所以一般情况下无需拖拽这两个图元,并且在一个流程当中"开始图元"和"结束图元"都有且仅有一个,不能重复拖拽。l 编辑活动属性:² 基本信息编辑活动ID为英文,该活动ID在系统流程设计器中还要用到。注意: u 开始环节后的第一个环节(发起及输入数据)活动ID必须为jbr。u 结束环节前的最后一个环节(归档)活动ID必须为gd。² 聚合模式为确定流程运行时该活动启

11、动前,它的前驱活动触发该活动的启动条件。² 分支模式为确定流程运行时该活动结束后,它的后继活动将以何种方式启动。l 指定参与者选择参与者选项卡,可以根据需要灵活地赋予当前活动不同的参与者。一般情况流程的第一个环节和最后一个环节的参与者应设为流程启动者。² 如为页面手动选择派发对象,则参与者应选择技术手段设置中的相关数据,变量命名规则为assignList_ + 当前活动ID。如下图² 如为后台程序自动压入参与者,则需根据流程具体情况自己编写代码,并通过规则逻辑选择该方法。注意更新bps引擎中的对应文件。参数配置表中写法如下图如下图² 如果两个环节的处理人

12、相同,可以在参与者中选择活动执行者 点击浏览选择与其参与者相同的环节。如下图²建议活动参与者在建流程图之初都选择流程启动者,等整个流程流转无问题后在对活动参与者进行设置。l 添加连接线:在选用面板选择连接线,在流程编辑区连接两个活动图元。修改活动的属性,根据连线情况设定活动属性中的聚合模式和分支模式。如该环节处理结束后,后继环节为多个并行环节,则分支模式选择为多路分支(如图4-5):图4-5如该环节启动前,前驱环节为并行环节则聚合模式选择为多路聚合(如图4-6)。图4-6驳回操作需设置连接线属性(如图4-7):图4-7如果该流程压入的is_back的值为true就执行该分支。(另见5

13、.5流程表单库管理)Ø 复杂连线:图4-8如图4-8:l A设置的是“多路分支”l E设置的是“多路聚合”l AB条件为b=1l AC条件为c=1l AD条件为d=1当AB、AC、AD中有一个执行完毕后,E活动会做是否启动的判断,由于E有三个分支线汇入,因此会判断是否三条线都满足条件。如果没有在线上设置条件,则默认是符合条件,E活动会一直等待其余分支的完成,如果AD中d!=1,则AD不会执行,因此E活动会因为等不到AD活动的结束而一直处于等待状态。解决方法是聚合的线上条件要与分支的一致,即:BE条件为b=1、CE条件为c=1、DE条件为d=1。4.4 提交BPS流程Ø 操作

14、前首先确认BPS Server已经启动。Ø 使用BPS流程编辑器打开流程文件,在流程编辑器中右键,中选择流程定义库交互/提交流程菜单项。Ø 提交模式选择:l 按照默认方式提交用户选择按照默认方式提交流程时会有两种情况: ² 如果流程定义库已经存在业务流程则覆盖最新版本的流程。 ² 如果流程定义库中不存在流程定义,则创建新版本流程。 l 覆盖已有版本如果流程不是第一次提交,用户可以从已经存在的版本列表中选择,指定一个已有的版本进行覆盖操作。 l 创建新版本用户提交业务流程时,可以选择创建新版本。版本生成规则是由BPS引擎控制的。如:当前流程版本为"

15、;1.1.1",则会创建新版本"1.1.2";如果第一次提交版本则会创建版本"1.1.1"。 l 输入版本描述,选择是否立即发布。用户可随需输入版本描述信息,系统默认的注释信息为用户名和提交时间。用户可以决定是否立即发布流程: ² 选中"立即发布"复选框,则为部署后马上执行发布动作,如果有已经发布的旧版本则取消发布旧版本,马上发布当前版本。 ² 不选中"立即发布"复选框,则为部署后不执行发布动作。如果是覆盖旧版本则不会改变原来版本的发布状态;如果是新版本则部署后为未发布状态。注意:&#

16、178; 项目一般用默认方式提交。² 记住提交的版本号,之后系统的流程设计器会用到。² 如果忘记版本号可以去 WFPROCESSDEFINE表中查找Ø 发布结果:提交完成后会显示提交结果信息,可以查看流程和流程所引用的业务资源是否成功提交,对于提交失败的资源,会显示失败的错误信息。4.5 子流程l 创建BPS子流程:双击编辑区空白处,选择流程参数,设定子流程需要的参数。l 父流程引入子流程:l 设置参数:l 双击子流程图标,选择多子流程策略。被迭代元素为要压入bps流程引擎的变量名,一般为ArrayList。迭代变量为传入每个子流程的变量名。l 选择子流程参数,点

17、击浏览选择要关联的子流程。并设定上要传入子流程的值。(迭代变量作为值传入子流程)5 应用流程设计器设计流程5.1 创建流程信息Ø 选择流程设计器面板中的流程库:Ø 创建流程信息l 流程英文名称是bps流程文件包路径+bps流程文件名。l 版本号与bps引擎流程模板的版本号保持一致(如果忘记版本号可查询数据库wfprocessdefine表)l 业务主表为之前第二步创建的数据表。l url为该流程action类的访问路径。l 是否是子流程:标示所建流程是否是子流程,子流程选择时可见(如下图)。以工程管理流程为例url为勘查单录入的action的名字Ø 添加流程图(工

18、单处理环节流程图查看时用到):将Visio画出的流程图放在项目eoms-skins/default/images/workflow下图片文件名为流程英文名称。文件格式为jpg。5.2 字典配置选择流程设计器面板中的字典配置:5.2.1 环节分类流程环节分类的管理,用于环节库管理、流程表单库管理、流程库管理的业务类型选择。Ø 选择左侧面板中的环节分类Ø 创建环节类型点击创建(如上图)Ø 创建环节分类字典中没有的分类。注意:显示名、数据值唯一不允许重复。Ø 模糊查询环节分类:查询是否含有该流程所需的环节分类。Ø 编辑和删除环节分类字典信息:5.2.

19、2 流程分类在角色人员中要用到Ø 选择左侧面板中的环节分类Ø 创建环节类型点击创建(如上图)Ø 填写新的类型操作与环节分类类似5.3 角色库Ø 单击选择角色库:Ø 明确流程中的角色:根据Visio流程图确定该流程所需的角色。Ø 模糊查询相关角色:查询角色库中可以复用的角色。可根据归属类型、角色中文名称,角色英文名称查询。Ø 创建角色:创建角色库没有的角色。l 右键点击归属类型选择添加角色:Ø 修改与删除角色:根据具体需要修改或删除角色。注意:删除是在数据库中做删除标志。1为删除。5.4 环节库l 维护流程中的环节:

20、根据Visio流程图确定该流程所需的环节。l 模糊查询相关环节:查询环节库中可以复用的环节。l 创建环节:创建环节库中没有的环节。注意:l 环节的中文名称和英文名称在环节库中唯一,不允许重复。l 环节关联信息暂不操作。Ø 修改与删除环节:根据具体需要修改或删除环节。注意:删除是在数据库中做删除标志。Y为删除。5.5 表单库管理Ø 创建流程各环节表单:流程中除发起工单环节的各个环节的表单都要在流程表单库创建。表单项解释:l 表单中文名称英文名称在流程表单库唯一不能重复;l 表单类型暂时没有用到;l 表单用途如选择环节处理,说明该表单为流程相关表单,将被放在工单页面中的工单处理

21、信息区显示;l 表单用途如选择业务信息,说明该表单为业务服务相关表单,将被放在工单页面中的业务信息区显示;l 表单URL为处理该表单的Action类的访问路径;l 数据区对应变量为要往流程引擎压入的变量名,以逗号分隔。(如驳回操作压入is_back变量另见4.3添加活动和连接线);l 提交URL,工单处理信息提交的URL;l 如处理工单无特殊的处理,只是通用的字段,表单URL使用通用处理wfCommonAction即可,无需自己再写action处理类和工单处理页面;通用工单处理页面: l 如只需简单增加字段,只需应用流程设计器中的流程环节表单定制器,自定义额外增加的部分。(数据的存储显示无需关

22、心,通用方法会自动处理)l 如需特殊处理,需要自己写该环节的工单处理类。以工程管理流程中设计审核环节为例,步骤如下:1. 在对应流程的action包下创建新action类(约定该类只与一个环节对应)。2. 该action类继承com.inspur.app.basic.action. AbstractTBnsAction类,并根据不同需求实现父类抽象方法(另见第7章)。3. 该action类的配置文件中增加相应的跳转页面。result name为deal转向工单处理页面;为detail的转向工单详情页面;还有为businessInfo的转向业务信息中流程侧页面;还有为historyBusines

23、sInfo的为流转信息中业务信息流程侧页面;5.6 应用流程设计器画出流程定义一份与引擎流程模板的信息保持一致的流程数据,包括流程主信息、流程节点及节点与角色、表单、资源服务的关联数据,用于开发流程时使用,开发时以本功能定义的流程为根据开发,业务侧与引擎里的流程脱离,引擎里的流程只提供流转的功能。Ø 选取要绑定的流程:选择需要绑定资源、表单、角色的流程,点击编辑流程图,弹出流程图编辑模板。Ø 比照该流程的bps流程文件画出流程图:说明:l 业务节点通过面板左上的业务节点类型选择。l 左键单击流程图的业务节点,在属性对话框编辑节点的属性说明:l 流程节点的英文名称与bps引擎

24、流程模板活动节点的英文名称保持一致。l 派发对象类型:无需派发就选择不使用,并行的选择并行分支。² 派发类型对象选择单一分支的工单处理页面自动添加一个派单信息组件。如图:² 派单对象选择并行分支的工单处理页面根据分支个数添加派单信息组件。如图:² 派单对象选择为不使用的工单处理界面不添加派单信息组件。如图:注意:并行分支汇总前的环节只有一个有派单对象。如: 业务端口确认的派发对象类型为不使用。l 子流程用子流程图表表示(另见5.1):l 绑定操作:选中流程节点点击鼠标右键,单击绑定相关资源。说明:l 分别可以绑定表单、角色、资源服务。其中角色虽然与环节绑定,但整个

25、流程该角色都可见。l 双击各列表的中资源的名称,该资源就会出现在已绑定的列表中。在已绑定的列表中单击名称,就会取消该绑定。5.7 提交流程点击提交,提交该流程的信息。5.8 表单定制Ø 创建自定义表单:l 点击表单属性编辑自定义表单的信息说明:² 流程分类:对应流程库管理中流程信息的流程分类。根据流程分类过滤流程。² 流程名称:对应流程库管理中流程信息的流程中文名称,确定自定义表单要绑定的流程。² 流程环节:对应流程库管理中该流程所绑定的环节,确定自定义表单要绑定的环节。² 生成form标签:是否在自定义表单中生成form标签(一般是否)。l

26、设计表单:特别说明:列表框的选择类型:新建选择项需要创建字典页面并在备注中填写customform。例:自定义表单部分:通过流程环节表单定制器绑定到流程环节后:5.9 角色人员Ø 选择流程:在流程角色树选择要操作的流程。Ø 选择角色:点击要操作的流程,显示已绑定在流程上的所有角色(参见5.6)Ø 创建编辑群组:选择要增加的群组成员类型,点击增加按钮。根据选择的群组成员类型会弹出人员或组的选择框。选择后点击保存完成操作。注意:公司名称必选,只有当角色绑定到相关环节后才能正常添加群组成员6 制作发起页面发起页面需要自己制作发起页面必须包含<jsp:include

27、 page="/jsp/wfdesign/common/script_include_upload.jsp" /><%- 包含隐藏的变量 -%><jsp:include page="/jsp/app/inc/create_parm_include.jsp" /><jsp:include page="/jsp/app/inc/taskFlag.jsp"/>如果发起页面有附件必须在js中包含<jsp:include page="/jsp/app/inc/include_deal_u

28、pload.jsp"/>7 EXT派发抄送人员选择对话框说明方法参数释义:showSelector( title, cfgstr, callback, processNameEn, mode)1. title:(string类型)-设置整个弹出窗口的标题,如果为空,则标题默认为:“选择派发/抄送人员”;2. cfgstr:(string 类型)-选择树显示配置,用以控制显示哪个(哪些)树。值为role, user, group三者的自由组合,中间以逗号隔开。例如:role,user表示显示角色树以及人员树;user,group表示显示人员树与群组树;3. callback:(f

29、unction 类型)-回调函数。回调函数请设置两个参数分别接收派发、抄送人员的结果集。结果集的类型均为fields为'id','name','type'的EXT RECORD 类型的数组。例如回调函数为function callback(records1, records2),我们可以在方法体中对records1或者records2这两个数组进行遍历,遍历的每一项都是一个EXT的RECORD(可参考Ext.data.Record),它有三个可取值的key: 'id','name','type',可

30、以通过record.get(id)等方法取得所需要的数据;4. processNameEn:(string 类型)-流程定义名,此参数仅在选择区域中存在角色树的情况下有效且必须。用以展示流程所绑定的角色;5. mode:(string类型)-选择模式,可选值为pf、cs以及空值。分别代表:“只显示派发选择框”,“只显示抄送选择框”,“两个都显示”。注意:任何情况下回调函数callback都需要接收两个参数,假设mode取cs,只显示抄送人员选择区,在callback回调函数中也要写两个参数,但仅仅对第二个参数进行抽取数据即可。分派人时三个必须的条件有处理人的id 、name、type。例如:&

31、lt;input type="hidden" id="assignList_designReview_ids" name="assignList_designReview_ids" value="$" /><input type="hidden" id="assignList_designReview_names" name="assignList_designReview_names" value="$ " />&l

32、t;input type="hidden" id="assignList_designReview_types" name="assignList_designReview_types" value="person" />8 初始化工单页面AbstractTBnsAction的init()方法已经封装了通用操作。包括初始化当前操作人的基本信息;查询当前节点的派发对象类型及后续节点列表;生成一个工单流水号等流程所需的参数;关联的子流程;绑定该环节自定义表单的加载;处理环节中绑定该环节除iframe外的资源服务加

33、载;通用工单处理页面;自定义表单的显示和数据存储。Ø 新建工单初始化(发起页面):l 如果发起页面需要特殊的业务处理,则需要在该流程的action类的initBody()方法中实现如:² 发起页面绑定资源服务(发起页面绑定资源服务作特殊处理):Overridepublic void initBody() throws Exception object.setTemplateName(TEMPLETNAME);if(TextUtil.isNull(object.getActiveName() super.getTresConfigTasksService().creResTa

34、sksWhenFlowInit(super.getRequest(), object, null);程序说明:发起页面未生成环节名称。object.getActiveName()为空。对于工单信息通过flowId获取:object.getFlowId();TbnsEngineeringProMgt object1 = tbnsEngineeringProMgtService.getTbnsObjectByFlowId(object.getFlowId();9 发起流程或者完成当前环节AbstractTBnsAction的submit()方法已经封装了通用操作。包括发起页面数据的处理;启动流程;

35、完成当前环节处理。Ø 发起流程:l 发起工单数据的封装,压入相关变量已有通用方法实现不需要另外编写代码。例如:在工程管理流程中的设计审核压入相关数据super.getRelationMap().put("finish_gcshg", "true");super.getRelationMap().put("finish_gcsg", "true");l 发起工单数据的保存,需要自己编写代码。² 流程service实现类中实现父类抽象方法startupProcessBody()其中参数mainObj

36、封装了发起工单的数据,参数resultMap封装了流程引擎数据,参数relationMap为相关数据区。例:完成工程管理流程发起页面数据的保存。Overridepublic void startupProcessBody(Map<String, Object> resultMap, Object mainObj, HashMap<String, Object> arg2, HttpServletRequest arg3) throws Exception TbnsEngineeringProMgt tbnsBtsIn = (TbnsEngineeringProMgt)m

37、ainObj;String pid = (String)resultMap.get("pid");tbnsBtsIn.setPid(Long.valueOf(pid);tbnsEngineeringProMgtDao.saveOrUpdate(tbnsBtsIn);Ø 完成当前环节:l 判断绑定的资源侧是否满足提交条件,表单数据入库,流程引擎相关操作不需要自己编写代码。l 如有特殊业务需要,在流程service实现类中实现父类抽象方法finishProcessBody()。Overridepublic void finishProcessBody(Map<S

38、tring, Object> resultMap, Object mainObj, HashMap<String, Object> relationMap, HttpServletRequest request) throws Exception .Ø 扩展submit()方法:可以在submitBody()中编写代码。比如压入相关数据10 环节信息处理环节信息如需要特殊处理,有特殊处理的信息比如 工程管理流程的设计审核环节需要新建一个关于设计审核的pojo 新建的pojo在此环节对应的action中作为模型驱动对象。新建的pojo必须包含的属性如下所示privat

39、e java.lang.String formNo;private java.lang.Long flowId;private java.lang.Long pid;private java.lang.String title;private java.lang.Long state;private java.lang.Long ownerId;private java.lang.String ownerName;private java.lang.Long deptId;private java.lang.String deptName;private java.lang.String ce

40、llPhone;private java.lang.Long companyId;private java.lang.String companyName;private java.lang.String processDefName;如有其它信息继续添加属性 比如设计审核的审核结果 <input type="radio" name="back_layout" value="false" checked value="通过" onclick="showNote();checkjg(0)"&

41、gt; 通过 <input type="radio" name="back_layout" value="true" value="不通过" onclick="showNote();checkjg(1)"> 不通过添加与页面表单中对应的属性 private java.lang.String back_layout;新添加的表单信息需要在环节详情页面用到$object. back_layout一个环节调用另一个环节的处理信息 代码如下WfActiveInfo activeInfo =

42、super.getWfActiveInfoService().getActiveInfoByFlowIdAndActiveName(object.getFlowId(), "contract","");List dealInfoList = new ArrayList() ;if(!TextUtil.isNull(activeInfo)dealInfoList=super.getWfActiveDealInfoService().listByCondition(" and t.wfActiveInfo.id="+activeInfo.

43、getId();/将取到的另一个环节的信息压入此环节对应的模型驱动对象中if(TextUtil.isNotNull(dealInfoList)setMObjByMap(object,dealInfoList);流程结束时如有特殊处理,重写finishProcessBody方法如下Overridepublic void finishProcessBody(Map<String, Object> arg0, Object obj, HashMap<String, Object> arg2, HttpServletRequest request) throws Excepti

44、on /获取流程的环节idString activeName = BeanUtils.getProperty(obj, "activeName");if(TextUtil.isNotNull(activeName) && "inspectionAudit".equalsIgnoreCase(activeName) )/获取相关数据区中的数据String openresult = request.getParameter("back_gcsg");if("true".equals(openresult

45、) String names = "finish_gcsg","tzbg"String processInstid = BeanUtils.getProperty(obj, "pid");/移除相关数据区中的数据super.getWfCommonUtil().removeRelativeData(processInstid, names);11 环节驳回处理1、 拿工程管理流程中勘查单确认环节驳回到分派勘查单环节作为例子2、 在驳回的链接线上选择简单表达式,填入相关数据 和 值入下图3、 在环节处理信息中用表单radio确认是否驳回,

46、 radio的name值与上图中的左值相同,代码如下:<td class="td-b">是否接收: </td><td colspan="3"><input type="radio" name="isAccept" value="false" checked onclick="checkjg(0)" >是<input type="radio" name="isAccept" value

47、="true" onclick="checkjg(1)">否</td>4、当流程主干信息驳回到流程分支上时,需要在流程出现分支的环节压入,流程聚合条件的相关数据。比如工程管理子流程中 设计审核环节开始有了分支,在主干环节验收环节需要驳回到 分支环节工程随工和工程施工!需要在设计审核环节提交时压入聚合的条件super.getRelationMap().put("finish_gcsg ", "true");super.getRelationMap().put("finish_gcsg", "true");工程随工和工程施工到竣工报验的连接线的条件分别是finis

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论