




已阅读5页,还剩49页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
NC开发平台技术红皮书NC-UAP 5.0用友NC-UAP2019-11-181第 页目 录第一章前言1第二章如何建立NC开发环境41.第一步:建立数据库42.第二步:运行UAP安装盘程序,安装NC服务器端环境42.第二步:运行UAP安装盘程序,安装NC服务器端环境53.第三步:在Eclipse中建立NC开发环境。11第三章NC初学者开发指南201.概述201.1基本概念201.2单据开发主要流程202.搭建开发环境212.1本文软件开发环境212.2给PD打补丁212.3建立数据库212.4建立开发工程223.数据库表pdm及SQL脚本的生成223.1数据模型223.2生成pdm步骤233.3生成SQL脚本步骤264.生成数据字典294.1步骤295.参照325.1什么是参照325.2建立参照类335.3实际应用346.单据模板中的公式使用366.1什么是公式366.2给单据模板设置公式37第四章NC集成开发工具401.进入Workshop:402.对UAP现有二次开发工具的集成413.表单开发流程导航工具42第 52 页第一章 前言用友公司针对大、中、小型企业分别建立了NC、U9、U8三条产品线,NC产品的目标是扮演集团级大型企业的信息化中枢,而UAP平台则扮演了整个NC产品的基础架构。按照中国ERP企业成功应用模式,要成为一个成功的ERP软件基础平台,UAP必须支持为目标客户提供标准化、行业化、个性化的解决方案。对于ERP系统的最终使用者来说,每天接触最多的就是包含了各种业务信息的表单。这样,对于开发者,它意味着大部分的精力都必须投入到表单程序中,而这些程序却只能满足个性化的需求。如何帮助开发者将主要精力转移到对业务逻辑的关注,同时帮助他们高效地创建出符合标准、行业、个性模式的表单程序?UAP提供的解决方案是模板化它是模式化思想的一种应用,包括以下两个方面:1 免开发的配置模板。利用表单设计器将表单的GUI界面保存成模板,用友的各产品研发团队可以为客户内置标准模板,实施顾问和二次开发伙伴可以针对企业的特性增加行业模板或个性化模板;另外,为了配套表单数据的查询功能、输出功能,UAP还提供了查询模板、报表模板和打印模板;2 需要开发的代码模板。这是对设计模式中Template模式的应用,作为基础类的代码遵循了“职责分明”和“高度重用”的原则,将GUI界面绘制、数据模型绑定、按钮事件处理、后台数据存取以及与流程平台的集成等复杂问题都封装起来,客户程序员可以不关心它们的实现细节,仅通过实现接口和重载等方式快速开发出表单程序。图1 UAP表单模板化解决方案UAP表单设计器将表单最常用的界面类型抽象成卡片和列表的组合,支持日期、数字、逻辑、下拉、参照等数据类型,并且可以定义数据在前台加载时自动执行的显示公式和编辑控件后触发的编辑公式。下图是UAP表单设计器配置出的一个表单模板。图2 UAP表单设计器示例UAP表单设计器承担的主要职责是定义GUI界面,UAP表单代码模板则以整个UAP平台为基础,为应用程序提供了对底层的封装。它的框架结构如下图所示:图3 UAP表单代码模板框架结构图UAP表单代码模板的首要职责是数据绑定针对不同的界面类型,提供对表单数据的查询、新增、编辑、保存、删除和打印输出功能。最重要的是,它还是连接业务系统表单程序和UAP流程平台、会计平台、数据交换平台等基础平台的桥梁,基于它,客户开发人员可以比较轻松地完成与以上几大平台的对接。另外,它支持开发人员自定义按钮和自定义事件处理逻辑,利用UAP平台后台业务动作的脚本化可在开发阶段和实施阶段根据业务逻辑灵活调整后台处理的程序。UAP表单模板化解决方案构建了符合标准化、行业化、个性化要求的表单程序,能帮助开发人员快速响应客户需求,并帮助实施顾问在交付阶段独立解决客户的部分个性化表单需求。第二章 如何建立NC开发环境第一次在NC环境中做开发,需要首先建立一个数据库环境,这个数据库环境中指定了NC所要使用的表空间,并预先建立了NC的系统表、视图、索引等,并预置了大量的初始化数据。然后,在Eclipse中建立一个开发项目,引用UAP的jar包即可。经过这两步,就完成了NC开发环境的建立。1. 第一步:建立数据库在数据库服务器(Oracle,MS SQLServer,DB2)中新建一个数据库,并执行数据库脚本指定NC应用的表空间,不同的数据库使用的脚本不一样,以MS SQLServer为例:假设新建的数据库叫ncdemo,MS SQLServe的数据文件存放在D:Microsoft SQL Serverdata 下,那么数据库脚本为ALTER DATABASE NCDEMO ADD FILEGROUP NNC_DATA01goALTER DATABASE NCDEMO ADD FILEGROUP NNC_DATA02goALTER DATABASE NCDEMO ADD FILEGROUP NNC_DATA03goALTER DATABASE NCDEMO ADD FILEGROUP NNC_INDEX01goALTER DATABASE NCDEMO ADD FILEGROUP NNC_INDEX02goALTER DATABASE NCDEMO ADD FILEGROUP NNC_INDEX03goALTER DATABASE NCDEMO ADD FILE(NAME = Nnnc_data01, FILENAME = ND:Microsoft SQL Serverdatannc_data01_Data.NDF , SIZE = 500, FILEGROWTH = 200) TO FILEGROUP NNC_DATA01goALTER DATABASE NCDEMO ADD FILE(NAME = Nnnc_data02, FILENAME = ND:Microsoft SQL Serverdatannc_data02_Data.NDF , SIZE = 500, FILEGROWTH = 200) TO FILEGROUP NNC_DATA02goALTER DATABASE NCDEMO ADD FILE(NAME = Nnnc_data03, FILENAME = ND:Microsoft SQL Serverdatannc_data03_Data.NDF , SIZE = 500, FILEGROWTH = 200) TO FILEGROUP NNC_DATA03goALTER DATABASE NCDEMO ADD FILE(NAME = Nnnc_index01, FILENAME = ND:Microsoft SQL Serverdatannc_index01_Data.NDF , SIZE = 200, FILEGROWTH = 100) TO FILEGROUP NNC_INDEX01goALTER DATABASE NCDEMO ADD FILE(NAME = Nnnc_index02, FILENAME = ND:Microsoft SQL Serverdatannc_index02_Data.NDF , SIZE = 200, FILEGROWTH = 100) TO FILEGROUP NNC_INDEX02goALTER DATABASE NCDEMO ADD FILE(NAME = Nnnc_index03, FILENAME = ND:Microsoft SQL Serverdatannc_index03_Data.NDF , SIZE = 200, FILEGROWTH = 100) TO FILEGROUP NNC_INDEX03Go2. 第二步:运行UAP安装盘程序,安装NC服务器端环境该步骤的目的是建立NC测试服务器,并利用它建表,并初始化数据表。运行UAP培训方案 V5安装盘 下的ncsetup.bat文件,会进入下面的安装向导:1) 选择NC服务器端环境根目录:2) 选择要安装的UAP产品模块:3) 开始NC环境的安装4) 选择第三方中间件,如果没有则默认使用NC自带中间件。执行完此向导后,可以在你指定的NC_HOME目录中创建NC服务器端环境,如下图:2 为NC应用配置数据源,方法是在上面的NC_HOMEierpbin目录中编辑prop.xml,为它加入一段数据源配置。假设数据源名称为design(数据源名字可以随意取),连接了上面所建的那个MS SQLServer数据库。如下所示:designV5jdbc:microsoft:sqlserver:/:1433;databaseName=ncdemo;selectMethod=cursorsaufsoftcom.microsoft.jdbc.sqlserver.SQLServerDriverSQLSERVERJDBC100100nc.bs.mw.ejb.xares.IerpDataSourcenc.bs.mw.ejb.xares.IerpXADataSource0003 一个NC服务器端环境可以连接多个数据库,每个连接信息叫做一个帐套,因此需要为NC配置一个帐套,使它关联上面的design数据源,方法是上面的NC_HOMEierpbin目录中编辑account.xml,为它加入一段帐套配置。如下所示:study学习帐套2000-01-012100-01-01Ndesignsimpchn2000-04-142100-04-14N11注意:为此帐套加入了超级管理员的信息。4 下面启动NC自带的中间件,方法是在上面的NC_HOME目录中双击startup.bat,中间件即可启动,启动界面如下:5 利用InternetExplore作为客户端登陆,在地址栏输入/login.jsp,即可看到下面的界面:6 输入用户名root,密码为空,登陆到系统管理帐套中,在打开的界面中点击左边列表的帐套管理选项,打开界面如下:7 前面建立了NC要使用的数据库,并为数据库设置了表空间信息,但这还不够,还必须为其安装NC的系统数据表和初始化数据。方法是点击上面 帐套管理 页面的“升级帐套”按钮,开始进行数据表的建立和初始化,如下图:1) 首先选择你要安装的模块:2) 然后开始初始化:8 至此,NC数据环境已准备好。注销后再登陆到”学习帐套”,即进入了真正的NC系统,如下所示:3. 第三步:在Eclipse中建立NC开发环境。在上一个步骤中,演示了怎么搭建NC的数据环境和测试环境,但作为开发人员,日常的工作都是在Eclipse开发环境中进行。在Eclipse中建立开发环境分下面几个步骤:1往Eclipse插件中加入NC开发所需的MDE插件,这些插件可以在 相关工具Eclipse_NC插件 中找到,拷贝到eclipse安装路径下的plugins目录下即可。2取得NC_HOME,NC_HOME包含了开发环境所需的所有jar包,本培训环境带有UAP提供的最新NC_HONE,将其拷贝到你机器上的任一路径,比如E:NCHOME。3打开Eclipse,点击菜单“新建/项目”,弹出下面的对话框:选择MDE Development下的Moudle Project即可。4点击下一步,开始创建Moudle Project,在下面的对话框中填入信息:5点击完成后,会创建项目,形成下图所示的目录结构:6下面,需要为此项目指定NC_HOME的路径,这样NC开发环境才有可依赖的JAR包。方法是在Eclipse中选择菜单 窗口首选项,在弹出的对话框中针对MDE Development输入NC_HOME的路径,如下:7点确定后,在项目上单击右键,然后选择菜单项 MDE Tools/update classpath,以更新NC_HOME。8至此,开发环境已建立完毕。在开发环境中调试程序,一般需要首先启动NC中间件,然后启动UAP客户端调试器。下面我们在eclipse调试器中建立这两个程序:1) 建立中间件调试启动点,方法是在调试点管理界面左边列表的Module Application下新建一个调试点,MDE插件会为它设置默认参数,我们只需改变一下调试点名称,如下所示:2) 建立UAP客户端调试器启动点,该调试器的入口类是nc.starter.test.Jstarter,因此可以新建一个 Java Application类型的调试点,输入入口类,如下所示:3) 在设立这两个调试点之后,要注意两个问题:一是你的项目所使用的JRE的安全策略必须是:grant permission java.security.AllPermission;这可以通过修改 $JRE根目录/jre/lib下的java.policy文件来实现,否则在启动中间件时会出现java.security.AccessControlException;二是要成功运行UAP客户端调试器(JStarter),必须将jre/lib下的plugin.jar也加入到项目默认的JRE的classpath中,如下所示:4) 此时即可先启动中间件,再启动客户端调试环境。客户端调试环境启动图如下:上面显示连接的是本机中间件,如果在远程有中间件,填入其IP和端口,也可用于调试开发环境中的客户端代码。点击“Start”按钮后即可进入NC登陆界面,如下所示:第三章 NC初学者开发指南1. 概述1.1 基本概念单据:比如报销时的报销单,一般由表头和表体组成(有些时候还含有表尾)。表头中包含了单据的主信息,比如日期、部门、预算项目;表体包含了单据的明细信息,比如具体的事项和金额;单据类型:一个业务系统为了使结构更清晰,通常也是分层的。比如,供应链系统包含了采购、库存等子系统,每个子系统都具有一个系统类型,而每个子系统都会具有很多张单据,为了区分这些单据,为每张单据命名一个单据类型,作为唯一标识;模板:单据开发涉及到三大模板(单据模板、查询模板、打印模板)。单据模板定义了单据的显示外观和基本框架,查询模板定义了单据的查询对话框,打印模板定义了单据信息打印到打印机的样式和格式;VO:值对象,用作传输数据的载体聚合VO:单据一般由表头和表体构成,因此单据的数据表通常设计成主表和子表。聚合VO是对单据数据的抽象,它用于装载主表VO和一组子表VO.;UI工厂:虽然能通过三大模板定义出单据的显示,但每张单据都有一些公共的或特殊的行为。UI工厂是一种单据开发框架,它将常用单据抽象成了很多类型,因此,UI工厂相当于是单据开发的代码模板,预置了单据的各种公共行为,比如增、删、改、查,并且可以连接到NC流程平台,支持审批、单据驱动等应用。1.2 单据开发主要流程NC平台对开发过程进行很多抽象和封装,使得单据开发变得非常容易。一般地,开发环境中,开发一个单据主要包括以下步骤:第一步、PowerDesigner中建立单据的物理模型(数据库表),保存成pdm文件(xml);第二步、利用PowerDesigner生成单据的建表脚本(SQL语句),在数据库中执行此脚本建立数据库表结构;第三步、利用NC集成辅助工具中的数据字典生成工具导入pdm文件,生成相应的数据字典;第四步、利用NC集成辅助工具中的CodeSeedVO工具利用odbc连接数据库,将单据涉及的数据表生成VO对象;第五步、以UI工厂为基础,应用Template模式,编写自己的单据类。下面,我们以一个简单的员工信息管理系统分别介绍这几个步骤。2. 搭建开发环境2.1 本文软件开发环境1) 操作系统:Windows 2000 Server2) 数据库设计工具:Sybase PowerDesigner Version 48(以下简称PD)为了给数据表自动生成时间戳(ts)、删除标志(dr)字段,需给PD打上插件补丁:db2cs7.xdb,oracl8i2.xdb,sqlserv7.xdb3) 数据库:MS SQL Server 20004) 开发工具:Eclipse 给PD打补丁将三个补丁文件全部拷贝到PD的安装目录的 Resource FilesDBMS 下即可2.3 建立数据库因为NC本身使用了很多数据库表,所以我们建立的数据库中必须包含NC系统表和其中的某些数据,而不是简单新建库。本文以SQL Server 2000为例。第一步、建立数据库v5test第二步、在v5test数据库名上右键选择导入数据,根据其它已经建好的库来生成库。或者根据数据库的备份和还原操作来建库。这样,我们就建立起包含NC系统表的数据库,在此基础上,我们建立自己的数据表进行开发。2.4 建立开发工程现在已经存在NC_UAP_UIFactory工程,其中包含了部分UI工厂源码和依赖的jar包,依此工程建立我们自己的eclipse工程。第一步、打开eclipse,新建java工程(在V5中则新建MDE工程)第二步、设置工程名,本例为UIFactoryV5,选择从存在的资源中创建工程,选择NC_UAP_UIFactory文件夹,依次确定建立工程。3. 数据库表pdm及SQL脚本的生成PD是一种高端的数据建模工具,使用它可以很方便的建立数据库、导出SQL脚本,其物理模型文件的后缀名为pdm,所以,NC辅助开发工具多处依赖PD来完成数据库相关操作。3.1 数据模型我们的员工信息管理系统包括员工的基本信息,员工的类别信息,员工工资,为了增强系统的可扩展性,从员工基本信息中独立出员工的家庭住址信息,街道信息。下图显示了实体间的关系。 3.2 生成pdm步骤第一步、打开PD文件夹中的可执行文件pdshell9.exe,启动PD,会出现如下界面,选择新建一个物理模型。第二步、我们以MS SQL Server数据库为例,选择数据库为Miscrosft SQL Server 7.x,注意,由于补丁文件只针对SQL Server 7.x版本,所以,无论我们用SQL Server 7.x还是2000或以上版本,此处的DBMS都要选择SQL. Server.7.x。第三步、确定后左侧面板中会出现一个节点,双击弹出如下对话框,设置此模型的name,code等第四步、在新建节点上点击右键选择 New-Table第五步、在General选项卡中,设置表名,表的中文描述第六步、在Columns选项卡中定义列,列的中文描述。注意此处列的数据类型,一般地,主键前缀为pk_,数据类型为char(20),boolean类型的列前缀为b,数据类型为char(1),日期类型前缀为d,数据类型为char(10),等等,更多数据库表字段命名规范参照附录开发规范文档。第七步、保存到指定目录,便得到pdm文件3.3 生成SQL脚本步骤第一步、选择菜单项 Database - Generate Database 第二步、在弹出界面中,设置生成脚本文件的存放路径,并对Tables & Views选项卡做如下设置第三步、对Keys & Indexs 选项卡做如下设置,注意,取消除主键外的所有选项,因为此时我们没有这些选项信息第四步、取消 Database 选项卡中的所有选项第五步、按下确定按钮后,便生成了SQL脚本4. 生成数据字典数据字典是NC二次开发工具中探测数据库表结构的数据基础,而不是采用每次需要数据都连接数据库的方式。数据字典由上一步骤生成的pdm文件生成,NC二次开发工具提供了相应的生成工具。4.1 步骤第一步、启动NC集成辅助开发工具,选择菜单 系统管理工具 - 数据字典管理第二步、在弹出的界面中,选择菜单项 工具 - 导入数据字典第三步、选择数据字典导入文件类型,此处选择 解析PDM文件第四步、在弹出的界面中点击 选择 按钮,选择上一章生成的PDM文件第五步、选择覆盖方式,一般地,选择 全部覆盖第六步、在弹出的窗口左侧会出现可供选择的数据表,选中需要导入的数据库表加到右边的窗口中第七步,会出现如下窗口,此时便完成了数据字典的导入5. 参照5.1 什么是参照参照录入,是一种辅助的数据输入方式,通常弹出界面的形式提供可以参考的数据,比如在录入省份信息时,提供一个全国省份列表以供选择。单据开发中,有很多输入字段存在类似的需求。NC系统中预置了很多种常见参照(基本覆盖了所有的基本档案,比如人员参照,存货参照),如果要自定义一种参照,则需要简单的开发工作。下面我们对员工家庭住址中的街道做一个参照,方便街道信息的录入。5.2 建立参照类步骤一、建立自己的参照类,定制被参照的数据及其显示样式及格式。我们用nc.ui.mytest.ref包来存放参照类,新建RoadRefModel继承DefaultRefModel类,用于录入员工数据。public class RoadRefModel extends DefaultRefModel / 步骤二、设置存储参照信息的数据库表名,及其关键字字段名public String getTableName() return uap_test_road;public String getPkFieldCode() return pk_road;步骤三、分别重载getFieldCode()和getFieldName()方法,设置需要参照的字段(数据库表中的列名),及其显示名称public String getFieldCode() return new String vname, vdescription;public String getFieldName() return new String 街道名称, 描述信息 ;步骤四、设置参照弹出对话框的标题 public String getRefTitle() return 道路参照; 这样,就完成了参照类,下面将单据模板中的某些字段设置上参照。5.3 实际应用如果在第六章建立的单据模板中添加一条员工家庭住址信息,输入住址所在街道时需要输入街道数据表对应记录的主键,这是添上参照,使得用户录入员工家庭住址时,可以通过选择街道来填充对应的街道字段步骤一、启动NC集成辅助开发工具,在 模板管理 - 单据模板设置工具 菜单中,修改之前建立的“T01”单据模板。步骤二、为了给用户更加直观的感受,我们给表体增加“街道名称”列,并将这列作为参照录入的列。在表体上按下右键菜单,选择“增加自定义项目”。步骤三、此时会弹出如下对话框。第四步、每一列都有一个标识,输入列标识后按下确定。这时,表体增加roadname列,单击列头右边的属性窗口会显出出项目主键和显示名称。第五步、修改显示名称为“街道名称”第六步、选择高级属性选项卡,将数据类型设置为“参照”,参照类型设置为我们建立的参照类,放到“”中,即为“”。设置关键字名为主键所在列的road,这是因为,员工地址表中关联的是街道主键,当客户在参照中选择了某个街道,需要将这条数据的主键带到界面中的road字段;第七步、此时,点击每行的街道名称单元格时,单元格中会显示出一个按钮,提示此格数据可以选择录入。第八步、按下按钮,弹出如下对话框。选择某一条纪录按下确定,表体对应的单元格中就会显示出相应的数据。6. 单据模板中的公式使用6.1 什么是公式单据模板中的公式为数据的展现提供了很多灵活性,比如可定义字段C=字段A+字段B,最常用的公式还是通过主键查询数据表中其它描述字段信息的公式,比如员工家庭地址中的街道字段存储着街道详细信息表中对应记录的主键,打开单据界面时,客户不希望看到一堆难以理解的主键而是更加直观的信息,如街道名称,街道描述信息等。同样的,选择一个街道名称后,对应的街道描述信息和街道主键也应该相应的。公式就定义了表体中各列间数据的依赖关系,主要有显示公式、编辑公式,显示公式在界面初始化或刷新时会自动运算,编辑公式在修改列数据时自动运算。6.2 给单据模板设置公式下面我们就用公式实现此功能。第一步、修改单据模板,给表体添加自定义表项:街道描述信息“roadinfo”。第二步、选中街道名称列头,打开其高级属性,单击编辑公式项。第三步、在弹出的对话框中输入公式,本例公式为:roadname -getColValue(uap_test_road,vname,pk_road , road);roadinfo-getColValue(uap_test_road,vdescription,pk_road,road);公式左边为模板中要置值项的项目主键,getColValue公式的第一个参数为数据库表名称,第二个参数为数据库表中要返回的列名称,第三个参数为数据库表主键,第四个参数为从当前模板中那个字段中取数按下确定按钮后,就完成了编辑公式的定义。在单据模版定义窗口,在“街道名称”字段通过上一章的参照选择某条道路信息后,“街道”和“街道信息”字段会自动填充相应信息。同理,建立显示公式。第一步、选择“街道”列头,打开高级属性,选择“显示公式”第二步、设置关联字段的值这样,在界面显示时,街道名称和街道描述就会自动显示出来第四章 NC集成开发工具UAP发展到现在,已经提供了不少二次开发工具和其他辅助性开发工具,更重要的是,也同时积累下来了一些标准的开发流程。作为NC内部和外部的开发者,通常的疑惑是如何使用这些工具,以及标准开发流程到底是什么(比如在表单开发中,何时该导入数据字典,何时配置单据模板)。NC集成开发工具(UAP Developer Workshop)的目标就是:集成UAP现有的所有二次开发工具,对其进行一定的组织;集成内置标准开发流程的(具有增值性)开发工具,比如表单开发工具、报表开发工具,以插件的形式组装起来。1. 进入Workshop:登陆到NC后,点击功能节点 客户化/二次开发工具/UAP集成开发工具,可打开下面的页面:点击最左边的图标即可进入UAP集成开发工具中,主界面为:Workshop一共分为6个区域:1) 菜单区:显示所有操作菜单;2) Toolbar区:与菜单相互为补充,提供快捷操作方式;3) 导航区:内置三种导航视图,每个导航视图都针对一种开发人员要操作的对象,比如在功能节点导航中,开发人员的操作对象是NC功能节点,在流程导航中,开发人员的操作对象是NC单据类型,在工具导航中,开发人员的操作对象是UAP对外提供的二次开发工具;4) 编辑区:它是开发
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度出租车租赁与智能调度合同范本
- 二零二五年度电子合同在新能源领域的应用与环保法规
- 2025版建筑电气设计合同范本
- 二零二五年度高品质红砖建筑工程承包合同
- 2025版企业数字化转型战略规划与实施商务咨询合同范本
- 2025房屋修缮与室内空气质量检测服务协议
- 2025版房雅与张伟双方自愿离婚协议
- 二零二五版医疗器械销售合同
- 二零二五年度房产租赁代理合同模板
- 二零二五年度股东合作投资旅游度假区协议书
- 智能交通概论全套教学课件
- 第六单元名著导读《水浒传》公开课一等奖创新教学设计统编版语文九年级上册
- 4.4均衡生产组织
- 五通桥区工业基地固体废弃物填埋场工程环评报告
- 增资先决条件确认函
- 浙江嘉兴南湖区嘉兴市南湖区新嘉街道合同制工作人员招考聘用9人模拟预测(共500题)笔试参考题库附答案详解
- 1号拌和站验收申请资料
- 丙二酸酯和吡唑结合封闭异氰酸酯提高涂料性能
- 北师大版小学六年级数学上册导学案全册
- 资产减值准备管理办法模版
- 医务人员之间的沟通技巧
评论
0/150
提交评论