二次开发培训文档
UG二次开发资料(SIEMENS内部培训)3

19
联合类型
在二次开发过程中有时需要将不同数据类型的变量放 在同一段内存单元中,这种使不同变量占用同一段内存的 结构类型称为联合类型。联合类型与结构类型的定义形式 相似,但含义不同。联合类型变量所占的内存长度等于其 内部最长数据成员的长度,而结构类型变量所占的内存长 度则是其各数据成员所占内存长度之和。 UG/Open API采用C语言的语法定义了一些常用的联 合类型,使用后缀“_u”表示。
18
枚举类型
typedef enum UF_DRF_chamfer_dimension_leader_type_e UF_DRF_chamfer_dimension_leader_type_t;
枚举类型UF_DRF_chamfer_dimension_leader_type_e 表示工程图中倒角尺寸引导线的类型。UG/Open API使用 typedef关键词将该枚举类型定义为新类型 UF_DRF_chamfer_dimension_leader_type_t。
8
OF
函数参数的约定
9
函数参数的约定
UF_PART_open Retrieves an existing NX part or Solid Edge part into the session and ……(函数说明) See Also History In V15.0, this function was enhanced so that it could open Solid Edge parts. extern int UF_PART_open ( const char * part_name, tag_t * part, UF_PART_load_status_t * error_status );
Maximo二次开发培训

二次开发培训1、二次开发介绍1.1、对象及属性设计好表结构后,通过MAXIMO中“数据库配置”应用程序创建表。
创建过程中需要注意以下属性:1.1.1、对象选项1.1.2、属性选项1.2、MBO介绍如果需要在新建的对象中加入特殊的业务逻辑,则需要自己编写MBO,并部署到相应的对象。
操作方法是在数据库配置应用程序中,找到指定的对象,并在“类”字段处输入值。
如下图所示:1.2.1、MBO介绍Mbo可理解为数据库中某一条记录,其方法都是对记录的操作,如:添加、删除、修改等。
1.2.1.1、MBO中常用的方法1.2.2、MboSet介绍MboSet可以理解为Mbo的集合,既多个Mbo。
其方法都是对整个Mbo集合的操作。
1.2.2.1、MboSet常用方法1.2.3、字段绑定逻辑介绍如果需要在指定的字段上加入特殊的业务逻辑,则需要自己classes,并部署到相应的字段上。
必须继承psdi.mbo.MboValueAdapter或psdi.mbo.MAXTableDomain(弹框)。
操作方法是在数据库配置应用程序中,找到指定的对象,并在“类”字段处输入值。
保存修改后,需要停止服务,执行configdb.bat使更改生效。
如下图所示:1.2.3.1、字段绑定类中常用的方法1.3、AppBean介绍AppBean用于实现MAXIMO6中应用程序的界面操作控制,如界面的新建、保存、发送工作流等。
在HARV-EAM系统中可参考“采购单”应用程序的AppBean,harv.webclient.beans.po.CtmPOAppBean。
1.3.1、AppBean常用方法介绍1.4、DataBean介绍DataBean用于实现MAXIMO6中特定数据源的界面操作控制,如弹出窗口中按钮的事件等。
在HARV-EAM系统中可参考“采购单”应用程序的DataBean,XXX对应按钮的事件2、开发工具配置2.1、启动eclipse启动eclipse,File—〉New—〉Project2.2、新建工程选择Java Project输入工程名称配置工程所需的JDK,如果生产环境是websphere,则eclipse中的JDK必须配置为WebSphere 的jdk。
二次开发初级培训班培训讲义

◆ 所有对数据的访问和操作都必须通过特定的方法,否则便无法使用是类的一个实例。类与对象的关系就如类型和变量的关系,所有对类的操作都必须通过对象来实现。当一个类定义了多个对象时,每个对象拥有各自的成员数据。
2.4 类的三种成员类型
◆ 私有成员(private):缺省情况下,一个类中的所有成员都是私有的。私有成员只能被类本身的成员函数访问。并且不具有继承性。
实质是把数据和处理这些数据的过程合并为一个单独的“对象”――一个具有确定特性的自完备的实体。
1.4 对象的程序设计的特征
1) 自完备(self_contained):能够完全实现一些严格定义的功能。
2) 封装
3) 继承
4) 多态
2. 类与数据封装
2.1 什么是类?
简单的说,类就是一种用户定义的数据类型,跟结构类似;并且,类具有自己的成员变量和成员函数(方法),通过它们可以对类自身进行操作。
如:汽车可以看作是发动机、车轮、座椅等诸如此类的集合。也可以从功能的角度来研究,譬如,能移动,加速,减速,刹车等。
定义(例子)VC++中讲解
2.2 封装(encapsulation)
定义:指能够把一个实体的信息、功能、响应都装入一个单独的对象中的特性。 封装的优点:
◆ 封装允许类的客户不必关心类的工作机理就可以使用它。就象驾驶员不必了解发动机的工作原理就可以驾驶汽车一样,类的客户在使用一个类时也不必了解它是如何工作的,而只需了解它的功能即可。
◆ 公有成员(public):公有成员可以被类成员函数和外部函数使用。 ◆ 保护成员(protected):在介绍继承时再介绍。
第一讲 基于WINDOWS编程的基础知识
泛微OA-ecology-二次开发实例-开发完整说明.doc

二次开发培训文档一、ECOLOGY系统框架结构1、主要的程序结构EcologyClassbean 存放编译后的CLASS文件js 系统中使用的JA V ASCRIPT和VBSCRIPT脚本Css 系统中JSP页面使用的样式ImagesImages_faceImages_frame 系统中使用的图片的存放目录CrmWorkflow 该功能分文件夹存放每个功能的文件WEB-INFProp 系统配置文件存放Service 系统的接口配置文件的存放二、说明一个JSP页面,一个JA V A程序的基本组成,如何阅读JSP页面1、一个jsp页面通常需要包含什么内容2、如何阅读一个JSP页面由于ECOLOGY系统支持多语言,因此在JSP页面上一般不出现中文,全部使用标签的形式来显示中文:比如:在IE上显示“姓名”那么在JSP页面中将通过<%=SystemEnv.getHtmlLabelName(413,user.getLanguage())%>这样的形式来表示,其中的数字413就是表示姓名,同时可以通过“select labelname from htmllabelinfo where indexid=413 and languageid=7”来获取到“姓名”这个显示名称,其中languageid=7表示中文显示名称,languageid=8表示英文显示名称.delete from HtmlLabelIndex where id=81249delete from HtmlLabelInfo where indexid=81249INSERT INTO HtmlLabelIndex values(81249,'选择范围')INSERT INTO HtmlLabelInfo VALUES(81249,'选择范围',7)INSERT INTO HtmlLabelInfo VALUES(81249,'Range of choice',8)INSERT INTO HtmlLabelInfo VALUES(81249,'選擇範圍',9)3、JA V A程序的基本组成在ECOLOGY中开发JA V A程序建议继承weaver.general. BaseBean,在BaseBean 中主要封装了两个方法:写日志文件,获取配置文件中的参数值。
二次开发初级培训班培训讲义

二次开发初级培训班培训讲义第一讲基于WINDOWS编程的基础知识1.引言1.1 过程化(procedural programming):程序被认为是在一个数据集合上进行的一系列操作。
1.2 结构化(structured programming):主要思想是:功能分解并逐步求精。
1.3 面向对象的程序设计(object_oriented programming)实质是把数据和处理这些数据的过程合并为一个单独的“对象”――一个具有确定特性的自完备的实体。
1.4 对象的程序设计的特征1)自完备(self_contained):能够完全实现一些严格定义的功能。
2)封装3)继承4)多态2. 类与数据封装2.1 什么是类?简单的说,类就是一种用户定义的数据类型,跟结构类似;并且,类具有自己的成员变量和成员函数(方法),通过它们可以对类自身进行操作。
如:汽车可以看作是发动机、车轮、座椅等诸如此类的集合。
也可以从功能的角度来研究,譬如,能移动,加速,减速,刹车等。
定义(例子)VC++中讲解2.2 封装(encapsulation)定义:指能够把一个实体的信息、功能、响应都装入一个单独的对象中的特性。
封装的优点:◆封装允许类的客户不必关心类的工作机理就可以使用它。
就象驾驶员不必了解发动机的工作原理就可以驾驶汽车一样,类的客户在使用一个类时也不必了解它是如何工作的,而只需了解它的功能即可。
◆所有对数据的访问和操作都必须通过特定的方法,否则便无法使用,从而达到数据隐藏的目的。
2.3 对象对象就是类的一个实例。
类与对象的关系就如类型和变量的关系,所有对类的操作都必须通过对象来实现。
当一个类定义了多个对象时,每个对象拥有各自的成员数据。
2.4 类的三种成员类型◆私有成员(private):缺省情况下,一个类中的所有成员都是私有的。
私有成员只能被类本身的成员函数访问。
并且不具有继承性。
◆公有成员(public):公有成员可以被类成员函数和外部函数使用。
技术开发培训平台二次开发规范

技术开发培训平台二次开发规范1. 引言技术开发培训平台是为了提供教育机构、企业等组织的培训需求而开发的系统。
为了满足不同用户的特定需求,可能需要进行二次开发。
本文档旨在规范技术开发培训平台的二次开发,保证开发过程的顺利进行及开发代码的可维护性。
2. 开发环境要求在进行技术开发培训平台二次开发时,需要使用以下开发环境:•编程语言:推荐使用Java或Python进行二次开发,同时也支持其他主流编程语言。
•开发工具:推荐使用集成开发环境(IDE)进行开发,如IntelliJ IDEA、Eclipse等。
•数据库:技术开发培训平台使用关系数据库存储数据,二次开发时需要根据需求选择适合的数据库,如MySQL、Oracle等。
3. 项目结构规范在进行技术开发培训平台二次开发时,应按照以下项目结构规范进行开发:- src/- main/- java/ # Java代码- resources/ # 资源文件- web/ # 前端代码和静态文件- test/ # 测试代码- doc/ # 文档- build.gradle # 项目构建脚本•src/main/java/:存放Java代码,包括后端API、数据模型、业务逻辑等。
•src/main/resources/:存放资源文件,如配置文件、模板文件等。
•src/main/web/:存放前端代码和静态文件,如HTML、CSS、JavaScript等。
•src/test/:存放测试代码,包括单元测试、集成测试等。
•doc/:存放文档,包括需求分析、设计文档等。
•build.gradle:项目构建脚本,用于管理项目依赖、编译、打包等。
4. 代码规范为了保证二次开发代码的可维护性,应遵循以下代码规范:•代码命名:采用驼峰命名法,类名使用大写开头,方法名和变量名使用小写开头。
命名应具有描述性,避免使用缩写和单词简写。
•代码缩进:使用4个空格进行缩进,不使用Tab键。
•每行最大长度:每行代码不超过80个字符。
UG二次开发资料(SIEMENS内部培训)4

15
编码命名规则 – tag_t
举 例 tag_t tPrtWorkPart = NULL_TAG; tObj 对象(Object) tag_t tObjCircle = NULL_TAG; tExp 表达式(Expression) tag_t tExpNewCreated; tFeat 特征(Feature) tag_t tFeatToBeDeleted; tBody 实体(Body) tag_t tBodyImported
13
编码命名规则 - 变量
规则5-6:UG结构类型、联合类型和枚举类型定义的 变量均采用所有字母小写、用下划线分隔单词的方式。 例如:UF_PART_load_status_t error_status; UF_ASSEM_mc_status_e status;
14
编码命名规则 – tag_t
tag_t命名规则 规则6-1:tag_t的命名规则在“匈牙利表示法”的基 础上做了补充,依然采用前缀加描述的方法,只 是前缀采用了“t + 对象类型简称”的结构。
双精度型:double double dTotalLength;
字符串型:char[] Char sRefsetsName[MAX_REFSET_LENGTH];
10
编码命名规则 - 变量
一般前缀 a p
含义 附加数组类型 附加指针类型
举例 int aiSerialNum[10]; char asObjName[10][30]; char *psNewString;
6
编码命名规则 - 类型
规则3-3:union类型的命名以大写的字母U开头,后面 的单词以大小写混排的方式,首字母大写,其余小写。 例如:ULaylerSet。 规则3-4:枚举类型(enum)的命名全部采用大写字母, 用下划线分隔单词。 例如:enum OBJECT_TYPE{point, line, face, body}。 规则3-5:用户自定义类型(typedef)的命名全部采用 大写字母,用下划线分割单词。 例如:typedef char* POINTER;。
CATIA二次开发培训文档(凸台的创建)

凸台的创建第一部分:工作台的创建一、创建工程1、点击File-> New CAA V5 Workplace;弹出如下界面;然后选择工程创建的目录,以及tool level(当前CATIA以及CAA的版本)2、选择第二项,create new generic framework,然后finish;3、填写模块的名字,点击OK后,工程就建立好了。
二、加载CAA提供的模块点击CAA Workspace->Locat Prerequisite Workspaces,弹出下列对话框:点击Add,选择CATIA安装目录的B18目录,点OK后,若提示Command done without errors加载完成。
三、创建一个模块(用于工作台的过渡)接下来就要开始逐步创建workbench了,点击File->Add CAA V5 Project->New Module,弹出下面对话框,填写Module的名称。
OK确定后会建立一个CreatePadTest.m的模块,并且被设为StartUp project,用加粗的字体显示。
四、创建workbench(注意上一步建立的模块要设为startup project)点击File->CAA V5 Item->CATIA Resouse->CATIA Pattern,弹出下列对话框:选择workbench,填写workObject Name,以及选择Associated Workshop(注:若不执行第二步,即没有加载CAA资源,则在Available workshops中没有关于Associated Workshop的选择:)之前实验室MSFA等平台是基于装备体对零件进行操作,采用的是PRDWorkshop在一般会出三个坐标系,这在开发时会经常出现坐标系的转换,增加了开发难度,现在所有模块开始采用PrtWks,基于零件体本身进行操作,只有一个坐标,直接在零件体上创建新的属性,并赋值保存下来。
CATIA二次开发CAA培训课件

第一章 CAA二次开发一般步骤
3.创建Addin
(3)创建工具条和菜单,添加两个函数 void CreateCommands(); CATCmdContainer * CreateToolbars();
void MyAddin::CreateCommands() { new PartCmdHeader("point","PartAddin",“PointCmd",(void *)NULL); new PartCmdHeader("line","PartAddin","LineCmd",(void *)NULL); }
第一个参数是按钮的名字,第二、三个代表按钮执行的命令所在 的module和命令的名字,参数四缺省。
第一章 CAA二次开发一般步骤
3.创建Addin
(3)创建工具条和菜单,添加两个函数
CATCmdContainer * MyAddin::CreateToolbars() { NewAccess(CATCmdContainer,pPartBenchTlb,PartBenchTlb);
输入名称
类型选择
第一章 CAA二次开发一般步骤
1.程序的建立
1.1 工程的建立
确定Workspace 的创建。
第一章 CAA二次开发一般步骤
1.程序的建立
1.1 工程的建立
确定后VC文件视图如 下:
此时生成了一个带有一个Framework 的Workspace。CAA的开发提供了两 种模式:批处理模式(Batch Mode) 和交互模式(Interactive Mode)。 我们开发主要用到的是交互模式。在 此模式下,可以创建两种交互界面: Workshop(Workbench)和Addin。 前者是创建一个新的模块,在这个模 块中除了标准的命令,其余均由用户 开发。后者指在已经存在的 Workbench中插入新的工具条和命令。
UG二次开发资料(SIEMENS内部培训)5.

MENU_FILES BEFORE
END_OF_BEFORE 与BEFORE相对应,其间的内容都是在BEFORE指定的 菜单项之前。 AFTER END_OF_AFTER HIDE SHOW 在已有的菜单文件中定义的某个菜单项之后加上一个 新项。 与AFTER相对应,其间的内容都是在AFTER指定的菜 单项之后。 隐藏一个菜单文件定义的菜单项。 显示菜单项
31
菜单文件及语法 – 示例1
VERSION 120 EDIT UG_GATEWAY_MAIN_MENUBAR HIDE UG_WINDOW BEFORE UG_HELP CASCADE_BUTTON CUSTOM_MENU LABEL 主菜单 END_OF_BEFORE MENU CUSTOM_MENU TOGGLE_BUTTON T_B_NAME LABEL TOGGLE按钮 ACCELERATOR Ctrl+1 ACTIONS TOG_BUTTON_ACTION
29
CREATE EDIT
TITLE TOP_MENU END_OF_TOP_MENU CASCADE_BUTTON
菜单文件及语法
MENU END_OF_MENU MODIFY END_OF_MODIFY BUTTON TOGGLE_BUTTON APPLICATION_BUTT ON 非顶层菜单定义开始 非顶层菜单定义结束 修改已有的菜单项,而不改变它们的位置 修改结束 在菜单中添加一个菜单项 Example: TOGGLE_BUTTON UG_VIEW_POPUP_ZOOM 应用模块菜单项,单击该菜单项,进入相应的应用 模块。 Example: APPLICATION_BUTTON UG_APP_MODELING 在不同菜单项组之间提供一个可见的分隔线 菜单项名称,也就是在交互环境下所看到的菜单项 的名称。 指定菜单命令的快捷键 指定菜单项是否灰化显示
泛微OAecology二次开发实例开发完整说明书

实用标准文案精彩文档二次开发培训文档一、ECOLOGY系统框架结构1、主要的程序结构EcologyClassbean 存放编译后的CLASS文件js 系统中使用的JAVASCRIPT和VBSCRIPT脚本Css 系统中JSP页面使用的样式ImagesImages_faceImages_frame 系统中使用的图片的存放目录CrmWorkflow 该功能分文件夹存放每个功能的文件WEB-INFProp 系统配置文件存放Service 系统的接口配置文件的存放二、说明一个JSP页面,一个JAVA程序的基本组成,如何阅读JSP页面1、一个jsp页面通常需要包含什么内容2、如何阅读一个JSP页面由于ECOLOGY系统支持多语言,因此在JSP页面上一般不出现中文,全部使用标签的形式来显示中文:比如:在IE上显示“姓名”那么在JSP页面中将通过<%=SystemEnv.getHtmlLabelName(413,user.getLanguage())%>这样的形式来表示,其中的数字413就是表示姓名,同时可以通过“select labelname fromhtmllabelinfo where indexid=413 and languageid=7”来获取到“姓名”这个显示名称,其中languageid=7表示中文显示名称,languageid=8表示英文显示名称.delete from HtmlLabelIndex where id=81249delete from HtmlLabelInfo where indexid=81249INSERT INTO HtmlLabelIndex values(81249,'选择范围')INSERT INTO HtmlLabelInfo VALUES(81249,'选择范围',7)INSERT INTO HtmlLabelInfo VALUES(81249,'Range of choice',8)INSERT INTO HtmlLabelInfo VALUES(81249,'選擇範圍',9)3、JAVA程序的基本组成在ECOLOGY中开发JAVA程序建议继承weaver.general. BaseBean,在BaseBean中主要封装了两个方法:写日志文件,获取配置文件中的参数值。
二次开发培训文档

二次开发培训文档一、ECOLOGY系统框架结构1、主要的程序结构EcologyClassbean 存放编译后的CLASS文件js 系统中使用的JA V ASCRIPT和VBSCRIPT脚本Css 系统中JSP页面使用的样式ImagesImages_faceImages_frame 系统中使用的图片的存放目录Crm..Workflow 该功能分文件夹存放每个功能的文件WEB-INFProp 系统配置文件存放Service 系统的接口配置文件的存放二、说明一个JSP页面,一个JA V A程序的基本组成,如何阅读JSP页面1、一个jsp页面通常需要包含什么内容2、如何阅读一个JSP页面由于ECOLOGY系统支持多语言,因此在JSP页面上一般不出现中文,全部使用标签的形式来显示中文:比如:在IE上显示“姓名”那么在JSP页面中将通过<%=SystemEnv.getHtmlLabelName(413,user.getLanguage())%>这样的形式来表示,其中的数字413就是表示姓名,同时可以通过“select labelname from htmllabelinfo where indexid=413 and languageid=7”来获取到“姓名”这个显示名称,其中languageid=7表示中文显示名称,languageid=8表示英文显示名称.3、JA V A程序的基本组成在ECOLOGY中开发JA V A程序建议继承weaver.general. BaseBean,在BaseBean 中主要封装了两个方法:写日志文件,获取配置文件中的参数值。
三、几个常用的底层类的说明最基本的底层类,数据库操作类,上传下载文件,如何构建缓存,基本的工具类Ecology系统底层包开发指南.doc四、页面权限控制的说明,怎样在页面中引用权限,怎么样新增一个权限,如何在新开发的模块上引入权限控制在这一部分将描述:新增的页面如何保持和ECOLOGY的风格保持一致;新增的页面上引用ECOLOGY中的权限;新增的页面上引用新的ECOLOGY中还没有的权限;1、可以根据<泛微协同商务系统(Ecology)_JSP式样编写指南>保证新开发的页面在风格上和原有系统保持一致泛微协同商务系统(Ecology)_JSP式样编写2、使用ECOLOGY分页控件实现数据的分页显示泛微分页控件使用帮助及规范.doc3、引用系统中的权限首先从系统的权限设置中找到需要引用的权限名称,如下如找到“地址类型维护”这个权限,其ID为41,然后通过“select rightdetailfrom systemrightdetail where rightid=41”得到其rightdetail=“AddAddressType:Add”,那么在JSP页面中通过如下语句,就可以使得只有的“地址类型维护”这个权限用的用户可以查看该页面<% if(!HrmUserVarify.checkUserRight("AddAddressType:Add ", user) ) {response.sendRedirect("/notice/noright.jsp");return;}%>4、新增新的权限控制新功能的查看新增功能模块添加权限控制.d o c五、系统的人员组织结构的介绍1、主要数据结构HrmResource(人员基本信息表).doc HrmSubCompany(分部信息表).docHrmDepartment(部门信息表).doc2、如何从缓存中获取人员信息(对三个缓存的简单介绍)六、对流程,文档数据的存放说明(主数据,明细数据,一般信息等在数据库中如何存放,主要为了考虑报表的问题)1、文档的主要数据结构文档信息的主要存储表DOCDETAIL:文档信息存储表,主要存放文档的基本信息DOCDETAILCONTENT: 文档内容存放表(如果是ORACLE数据库,如果文档的类型是HTML文档,那么文档内容存放在该表中,SQLSERVER数据库不用该表)DOCIMAGEFILE:文档,附件关联表,此表记录文档和附件(WORD,EXCEL格式文档在数据库中按照附件格式存放)的关系(即一个文档关联了几个附件)IMAGEFILE:附件路径存放表,此表记录了文档的附件(或者WORD,EXCE)存放在文件服务器上的位置DOCSHARE:文档共享表SHARINNERDOC:文档共享明细表,此表存放了该表具体共享给那些用户了DocDetail.doc ImageFile.doc DocImageFile.doc shareinnerdoc.docDocShare.doc2、流程的主要数据结构这里主要介绍流程的数据存放结构及如果通过流程类型获取到流程的字段信息,流程的载体分为表单和单据两类,表单和单据的区别在于:所有使用表单的流程数据存放在同一个表中,而单据每个单据对应着一张独立的数据表1、表单一、对于表单而言流程的数据信息存放在三个数据表中Workflow_requestbase:该表存放了流程的基本信息:标题,创建人,创建时间,流程类型等等Workflow_form:该表存储了流程的具体信息通过REQUESTID字段和Workflow_requestbase表关联Workflow_formdetail:该表存放了流程的明细信息,同样通过REQUESTID字段和Workflow_requestbase表关联二、通过流程的类型如何获取该流程使用了Workflow_form和Workflow_formdetail表中哪些字段在Workflow_form和Workflow_formdetail表中存放了大量字段,所有使用表单的流程的字段都在这两个表中,如何获取每个流程使用了那些字段呢?A、找到流程的类型ID,假定为wfidB、找到流程用了哪个表单select formid from workflow_base whereid=wfid and isbill=’0’C、获得该表单用到了哪些主字段:select(select fieldlable from workflow_fieldlable where workflow_fieldlable.fieldid=workflow_formfield.fieldid and langurageid=7andworkflow_fieldlable.formid=workflow_formfield.formid)as name,(select fieldname from workflow_formdictwhere id=fieldid)from workflow_formfield whereformid=上面获取的FORMID and (isdetail is null orisdetail=’’)哪些明细字段:select(select fieldname fromworkflow_formdictdetail where id=fieldid)fromworkflow_formfield where formid=上面获取的FORMID andisdetail=’1’2、单据对于表单而言流程的数据信息存放在三个数据表中Workflow_requestbase:该表存放了流程的基本信息:标题,创建人,创建时间,流程类型等等Workflow_form:该表只存放Workflow_requestbase和单据表之间的关系信息各单据主表:该表存储了流程的具体信息通过REQUESTID字段和Workflow_requestbase表关联,如何获取该表呢:A、找到流程的类型ID,假定为wfidB、找到流程用了哪个单据select formid form workflow_basewhere id=wfid and isbill=’1’C、通过单据ID可以获取到该单据使用的字段Select * from workflow_billfield where billid= formidD、通过单据ID找到其用了那个表存储流程主信息,那个表存储流程明细信息select tablename from workflow_bill where id= formidselect tablename from workflow_billdetailtablewhere id= formid各单据主明细表:该表存放了流程的明细信息,同样通过REQUESTID字段和Workflow_requestbase表关联3、流程的其他信息表结构流程处理人情况表Workflow_currentoperator:此表存储了流程当前未操作者,已操作者等信息workflow_requestlog 流程处理意见表:此表存储了流程处理人处理过的审批意见workflow_requestviewlog 流程的查看日志workflow_requestbase.doc workflow_bill.doc workflow_base.doc workflow_currentoperator.docworkflow_requestLog.doc七、如何新建,定制一个客户化的单据新建单据的好处,在于可以比较容易到把新建单据表中的信息和其他信息进行一些必要的操作八、系统已经有可开发的接口的培训1、短信接口可以通过该接口实现其他短信网关或者硬件短信设备进行在OA中发送短信的操作通用短信接口实现方式及使用说明.doc2、单点登录接口ECOLOGY提供了通过用户映射和模拟其他系统登录窗体的方式实现多系统之间的单点登录接口Ecology系统接口指南---单点登录篇.doc3、数据源和计划任务接口在ECOLOGY系统中,可以定义多个其他系统的数据连接,通过该连接可以和其他系统的数据库直接连接,同时也可以设置“计划任务”,系统根据设置定时制定执行设定的计划。
泛微OA ecology 二次开发实例 开发完整说明学习资料

泛微O A e c o l o g y二次开发实例开发完整说明二次开发培训文档一、ECOLOGY系统框架结构1、主要的程序结构EcologyClassbean 存放编译后的CLASS文件js 系统中使用的JAVASCRIPT和VBSCRIPT脚本Css 系统中JSP页面使用的样式ImagesImages_faceImages_frame 系统中使用的图片的存放目录CrmWorkflow 该功能分文件夹存放每个功能的文件WEB-INFProp 系统配置文件存放Service 系统的接口配置文件的存放二、说明一个JSP页面,一个JAVA程序的基本组成,如何阅读JSP页面1、一个jsp页面通常需要包含什么内容2、如何阅读一个JSP页面由于ECOLOGY系统支持多语言,因此在JSP页面上一般不出现中文,全部使用标签的形式来显示中文:比如:在IE上显示“姓名”那么在JSP页面中将通过<%=SystemEnv.getHtmlLabelName(413,user.getLanguage())%>这样的形式来表示,其中的数字413就是表示姓名,同时可以通过“selectlabelname from htmllabelinfo where indexid=413 and languageid=7”来获取到“姓名”这个显示名称,其中languageid=7表示中文显示名称,languageid=8表示英文显示名称.delete from HtmlLabelIndex where id=81249delete from HtmlLabelInfo where indexid=81249INSERT INTO HtmlLabelIndex values(81249,'选择范围')INSERT INTO HtmlLabelInfo VALUES(81249,'选择范围',7)INSERT INTO HtmlLabelInfo VALUES(81249,'Range of choice',8)INSERT INTO HtmlLabelInfo VALUES(81249,'選擇範圍',9)3、JAVA程序的基本组成在ECOLOGY中开发JAVA程序建议继承weaver.general. BaseBean,在BaseBean中主要封装了两个方法:写日志文件,获取配置文件中的参数值。
UG二次开发资料(SIEMENS内部培训)2

24
工程路径设置 - 环境变量法
UG 环境配置文件ugii_env.dat 中存在3个用于注册 工程路径的环境变量,如下表所示。去掉环境变量前的 注释符“#",在等号后写入具体的工程路径,则在 UG 启 动的同时会将这些环境变量所指定的工程路径中的资源 按照优先级的顺序加载。
环境变量名 工程路径 优先级 最高 其次 最低
UG_VENDOR_DIR 存放 UG 指定应用开发产品的工程路径 UG_SITE_DIR UG_USER_DIR 存放其余应用开发产品的工程路径 存放用户自己应用开发产品的工程路径
25
API运行模式
26
© UGS Corp. 2007. All rights reserved.
API运行模式 – 内部模式
19
应用程序框架
菜单:菜单文件(.men)和工具条文件(.tbr),放在应用程 序目录的startup子目录中。 对话框:对话框文件(.dlg),放在程序目录的application 子目录中。 应用程序(回调函数):应用程序(.dll),放在程序目录 的startup子目录中。 UG/Open API库函数:默认存放在 “$UGII_BASE_DIR\ugopen”目录中。在创建应用程序时需 要配置。
二次开发应用框架
日期:2007年 8 月
1
© UGS Corp. 2007. All rights reserved.
主要内容
¾二次开发工程项目的创建 ¾应用程序框架 ¾工程路径设置 ¾API运行模式 ¾程序的初始化及终止 ¾用户入口
2
工程项目的创建
3
© UGS Corp. 2007. All rights reserved.
内部模式(Internal开发模式)的程序只能在UG的界 面环境下运行。在运行内部程序时,它们以 .dll (动态链 接库)的方式被调到UG的进程空间中。它必须启动UG才 能运行。 内部程序有下列特点: 9执行代码小,连接快; 9内部程序一旦被加载到内存中,只能通过UG/Open API 的卸载功能才能从UG运行功能中卸载它; 9运行结果在UG的界面图形环境中可见; 9入口函数是ufusr或ufsta; 9最大的优点是能处理UG的UI的对象接口,实现和UG界 面的无缝集成
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二次开发培训文档1、ECOLOGY系统框架结构1、主要的程序结构EcologyClassbean 存放编译后的CLASS文件js 系统中使用的JAVASCRIPT和VBSCRIPT脚本Css 系统中JSP页面使用的样式ImagesImages_faceImages_frame 系统中使用的图片的存放目录Crm..Workflow 该功能分文件夹存放每个功能的文件WEB-INFProp 系统配置文件存放Service 系统的接口配置文件的存放2、说明一个JSP页面,一个JAVA程序的基本组成,如何阅读JSP页面1、一个jsp页面通常需要包含什么内容2、如何阅读一个JSP页面由于ECOLOGY系统支持多语言,因此在JSP页面上一般不出现中文,全部使用标签的形式来显示中文:比如:在IE上显示“姓名”那么在JSP页面中将通过<%=SystemEnv.getHtmlLabelName(413,user.getLanguage())%>这样的形式来表示,其中的数字413就是表示姓名,同时可以通过“select labelname from htmllabelinfo where indexid=413 andlanguageid=7”来获取到“姓名”这个显示名称,其中languageid=7表示中文显示名称,languageid=8表示英文显示名称.3、JAVA程序的基本组成在ECOLOGY中开发JAVA程序建议继承weaver.general.BaseBean,在BaseBean中主要封装了两个方法:写日志文件,获取配置文件中的参数值。
3、几个常用的底层类的说明最基本的底层类,数据库操作类,上传下载文件,如何构建缓存,基本的工具类4、页面权限控制的说明,怎样在页面中引用权限,怎么样新增一个权限,如何在新开发的模块上引入权限控制在这一部分将描述:新增的页面如何保持和ECOLOGY的风格保持一致;新增的页面上引用ECOLOGY中的权限;新增的页面上引用新的ECOLOGY中还没有的权限;1、可以根据<泛微协同商务系统(Ecology)_JSP式样编写指南>保证新开发的页面在风格上和原有系统保持一致2、使用ECOLOGY分页控件实现数据的分页显示3、引用系统中的权限首先从系统的权限设置中找到需要引用的权限名称,如下如找到“地址类型维护”这个权限,其ID为41,然后通过“select rightdetail fromsystemrightdetail where rightid=41”得到其rightdetail=“AddAddressType:Add”,那么在JSP页面中通过如下语句,就可以使得只有的“地址类型维护”这个权限用的用户可以查看该页面<% if(!HrmUserVarify.checkUserRight("AddAddressType:Add ",user) ) {response.sendRedirect("/notice/noright.jsp");return;}%>4、新增新的权限控制新功能的查看5、系统的人员组织结构的介绍5、主要数据结构6、如何从缓存中获取人员信息(对三个缓存的简单介绍)6、对流程,文档数据的存放说明(主数据,明细数据,一般信息等在数据库中如何存放,主要为了考虑报表的问题)7、文档的主要数据结构文档信息的主要存储表DOCDETAIL:文档信息存储表,主要存放文档的基本信息DOCDETAILCONTENT: 文档内容存放表(如果是ORACLE数据库,如果文档的类型是HTML文档,那么文档内容存放在该表中,SQLSERVER数据库不用该表)DOCIMAGEFILE:文档,附件关联表,此表记录文档和附件(WORD,EXCEL格式文档在数据库中按照附件格式存放)的关系(即一个文档关联了几个附件)IMAGEFILE:附件路径存放表,此表记录了文档的附件(或者WORD,EXCE)存放在文件服务器上的位置DOCSHARE:文档共享表SHARINNERDOC:文档共享明细表,此表存放了该表具体共享给那些用户了8、流程的主要数据结构这里主要介绍流程的数据存放结构及如果通过流程类型获取到流程的字段信息,流程的载体分为表单和单据两类,表单和单据的区别在于:所有使用表单的流程数据存放在同一个表中,而单据每个单据对应着一张独立的数据表1、表单一、对于表单而言流程的数据信息存放在三个数据表中Workflow_requestbase:该表存放了流程的基本信息:标题,创建人,创建时间,流程类型等等Workflow_form:该表存储了流程的具体信息通过REQUESTID字段和Workflow_requestbase表关联Workflow_formdetail:该表存放了流程的明细信息,同样通过REQUESTID字段和Workflow_requestbase表关联二、通过流程的类型如何获取该流程使用了Workflow_form和Workflow_formdetail表中哪些字段在Workflow_form和Workflow_formdetail表中存放了大量字段,所有使用表单的流程的字段都在这两个表中,如何获取每个流程使用了那些字段呢?A、找到流程的类型ID,假定为wfidB、找到流程用了哪个表单 select formid fromworkflow_base where id=wfid and isbill=’0’C、获得该表单用到了哪些主字段:select(select fieldlable fromworkflow_fieldlable whereworkflow_fieldlable.fieldid=workflow_formfiand langurageid=7andworkflow_fieldlable.formid=workflow_formfieas name,(select fieldname fromworkflow_formdict whereid=fieldid)fromworkflow_formfield where formid=上面获取的FORMID and (isdetail isnull or isdetail=’’)哪些明细字段:select(select fieldname fromworkflow_formdictdetail whereid=fieldid)fromworkflow_formfield where formid=上面获取的FORMID and isdetail=’1’2、单据对于表单而言流程的数据信息存放在三个数据表中Workflow_requestbase:该表存放了流程的基本信息:标题,创建人,创建时间,流程类型等等Workflow_form:该表只存放Workflow_requestbase和单据表之间的关系信息各单据主表:该表存储了流程的具体信息通过REQUESTID 字段和Workflow_requestbase表关联,如何获取该表呢:A、找到流程的类型ID,假定为wfidB、找到流程用了哪个单据 select formid formworkflow_base where id=wfid and isbill=’1’C、通过单据ID可以获取到该单据使用的字段Select * from workflow_billfield where billid= formidD、通过单据ID找到其用了那个表存储流程主信息,那个表存储流程明细信息select tablename from workflow_bill where id= formidselect tablename fromworkflow_billdetailtable where id= formid各单据主明细表:该表存放了流程的明细信息,同样通过REQUESTID字段和Workflow_requestbase表关联3、流程的其他信息表结构流程处理人情况表Workflow_currentoperator:此表存储了流程当前未操作者,已操作者等信息workflow_requestlog 流程处理意见表:此表存储了流程处理人处理过的审批意见workflow_requestviewlog 流程的查看日志7、如何新建,定制一个客户化的单据新建单据的好处,在于可以比较容易到把新建单据表中的信息和其他信息进行一些必要的操作8、系统已经有可开发的接口的培训9、短信接口可以通过该接口实现其他短信网关或者硬件短信设备进行在OA中发送短信的操作10、单点登录接口ECOLOGY提供了通过用户映射和模拟其他系统登录窗体的方式实现多系统之间的单点登录接口11、数据源和计划任务接口在ECOLOGY系统中,可以定义多个其他系统的数据连接,通过该连接可以和其他系统的数据库直接连接,同时也可以设置“计划任务”,系统根据设置定时制定执行设定的计划。
示例:12、自定义浏览框接口在ECOLOGY系统中可以通过该接口,实现在流程填写数据时直接选择其他系统中的数据,或者选择本系统中未定义的数据示例:13、节点附加操作接口该接口主要用来在流程的流转过程中,触发一些附加的事件或动作,达到将流程的数据和其他模块或者其他系统进行交互的功能示例:14、Ecology外部门户接口说明ECOLOGY系统中的新闻可以通过该接口发布到外部网站上15、文档webservice接口16、流程webservice接口9、流程中通过SQL脚本实现字段联动功能的培训系统中已经提供了流程字段联动的功能,通过简单的执行一条SQL语句就可以实现各个流程的字段联动功能10、开发步骤介绍17、根据开发需求撰写需求文档并给需求提交人确认。
18、搭建本地的客户环境,具体搭建方式见“十一”。
19、开发实现客户需求,并进行自测。
20、提交开发文件、脚本、表结构等至VSS中,提交规范见“十二”。
21、将提交的文件和VSS版本号记录如QC中,QC规范见“十三”。
11、客户开发环境的搭建22、安装好本机的开发工具eclipse和数据库(sqlserver2008和oracle10G)23、从//192.168.4.206/ECOLOGY_customer/客户名称/历史文件/ecology中获取客户最新文件24、http://www.e-/customersystem/data/CustomerSystemRecordList.jsp查询客户,获得品质部搭建的客户模拟环境(如果没有请联系测试人员让其搭建),从客户模拟环境中备份数据库到本机进行还原。