文档库 最新最全的文档下载
当前位置:文档库 › 通达OA二次开发手册

通达OA二次开发手册

Office Anywhere 网络智能办公系统

二次开发手册

中国兵器工业信息中心

2005年7月10日

前言

Office Anywhere网络智能办公系统(以下简称通达OA),不仅是一套成熟的网络办公系统,同时也是一个完整、精巧的软件开发平台,不仅集成了Web 开发的全套环境,并提供了管理架构、系统资源的开放性支持,是开发中小型管理应用系统的理想平台。

本文将从不同的技术层面向您揭示通达OA的二次开发细节,是主要针对专职程序设计人员、编程爱好者、软件产品技术支持人员编写的OA二次开发入门教程。

通过阅读本文,您将不仅可以了解通达OA的设计奥秘,也将能够运用本文所介绍的知识和技巧,轻松构建属于自己的应用系统或模块,文中将结合具体实例加以说明。

一、软件开发环境简介

1.1 编程环境

通达OA主要采用PHP语言开发,系统使用Mysql数据库。

在Windows平台下,通达OA主要注册了2个系统服务,可以通过控制面板-〉管理工具-〉服务,查看这2项服务,服务名分别是Office_Anywhere和Mysql,Office_Anywhere服务实际是集成了PHP模块的Apache服务,Apache是通达OA 所使用的Web Server,通达OA也可以支持IIS作为Web Server,具体配置方法参见网站下载中心相关文档。

关于PHP语言的使用,可参阅https://www.wendangku.net/doc/0b11724776.html,,下载PHP中文手册,作为开发指导;关于Mysql数据库的管理与使用,将在第二章进行详细介绍。

1.2目录层次结构

通达OA的目录层次结构清晰,体现出对服务程序、应用程序、WEB页面的巧妙整合与组织,便于理解和扩充。

下面对目录结构加以说明:

D:\myoa

├─bin Apache及PHP系统文件、PHP配置文件、Zend/MMcache加速器、服务配置程序

│└─sapi PHP的Apache接口程序

├─modules Apache的模块

├─webroot 通达OA的WEB根目录

│├─attachment通达OA的附件目录,其路径可通过webroot\inc\oa_config.php指定

││├─wm 外部邮件存储目录

││└─hrms_pic 人事档案照片目录

│├─general 主要模块目录

││├─……一般模块目录(略)

││├─ipanel 主控面板,集成了菜单、短信箱等应用控制界面

│││├─bookmark 收藏夹

│││├─shortcut 快捷组

││││├─menu_define 菜单快捷组

││││└─win_define Windows快捷组

│││└─smsbox 短信箱

││├─mytable 桌面

│││├─intel_view 智能桌面显示程序

│││└─myconfig 桌面自定义

││├─status_bar 状态栏

││├─system 系统功能模块,下级目录略

││└─winexe 调用Windows外部程序的页面

│├─ikernel 通用管理程序,支持创建简单的MIS系统

│├─images 系统图片目录

││├─avatar 头像

││└─menu 菜单图片

│├─inc 系统通用程序及函数目录

││├─dept_list 部门列表XML输出

││├─jpgraph 统计图组件

││└─user_list 用户列表XML输出

│├─ispirit OA精灵页面

│├─module 系统组件

││├─dept_select 部门选择组件

││├─editor 简易HTML编辑器组件

││├─OC Office 文档在线编辑与阅读-适用于文件柜、工作流等模块││├─OC_NETDISK 文档在线编辑与阅读-仅适用于网络硬盘

││├─rte 复杂HTML编辑器组件

││├─save_file 文件转存组件

││├─user_select 用户多选组件

││└─user_select_single 用户单选组件

│├─theme 界面主题

│├─update 系统升级,该文件夹下如存在1.php会被自动执行并删除│└─wav 系统声音,Flash格式

├─tmp 缓存目录,存储上传文件和登录Session文件。

├─logs Apache日志目录,主要包含了错误日志error.log

├─conf Apache配置文件目录

├─data Mysql数据库目录

│├─TD_OA 通达OA主数据库

│├─IBF 超级论坛数据库

│└─mysql Mysql系统数据库

└─mysql Mysql数据库服务程序

二、数据库管理与应用

2.1 数据库的配置

通达OA在安装完毕后,会自动配置Mysql启动参数,并注册Mysql系统服务。出于特殊需要,用户也可以手动修改Mysql的配置参数,方法是使用记事本打开windows目录\my.ini,这是Mysql的配置文件,其内容一般如下格式:[mysqld]

basedir=D:\MYOA\mysql\

datadir=D:\MYOA\data\

default-character-set=gbk

set-variable=max_connections=1000

其中,basedir表示mysql服务程序路径、datadir表示数据库文件路径,可根据实际情况进行调整并保存配置文件,重新启动Mysql服务后生效。

2.2 数据库的管理

Mysql的数据库管理工具很多,常见的有phpMyAdmin等,phpMyAdmin是使用PHP编写的免费Mysql数据库管理工具。由于OA的Mysql数据库出于安全考虑,被配置为仅能从本机访问,所以使用phpMyAdmin这样的B/S结构的管理工具,可实现数据库的远程管理。

可通过网站OA知识库/Office Anywhere 高级应用技巧/数据库管理工具/mysql网页方式管理工具,找到该程序的下载地址。

将解压的文件,拷贝至 OA目录\webroot\mysql 目录下。mysql数据库的网页管理工具,使用方法 http://主机名/mysql,注意,进入后先选择中文界面。该管理工具的使用需具有一定数据库基础,请勿进行危险操作,以免导致数据丢失。另外,为了防止他人利用该工具侵入数据库系统,可把目录名设为比较复杂的,如mysql2345,避免目录名被猜测到。

phpMyAdmin主界面

为便于说明二次开发的过程,我们通过数据库管理工具,新建一个数据表。

新数据表STUDENT表示学生数据表,包含3个字段,ID是自增字段,作为主键

和唯一标识,NAME表示姓名,SEX表示性别,值为1表示男,为2表示女。

插入一条数据,并浏览,显示如图

数据库管理工具简要介绍到此,对于有SQL关系型数据库基础的开发人员,掌握phpMyAdmin这个工具并不难。

关于Mysql的语法规则参见Mysql手册,连同OA数据库结构说明,均可到上面提到的phpMyAdmin下载地址下载。

三、使用PHP语言开发OA功能模块的规范

3.1 PHP代码样例

以下是一段样例代码test.php,可放置于webroot目录下执行,可作为开发OA 应用程序的模版。//或/*…*/是PHP的注释语句。

//include_once("inc/auth.php"); // 如需登录验证则包含,未登录将退出

//include_once("inc/conn.php"); // 如需要连接数据库则包含

//include_once("inc/utility_all.php"); // 如需要使用公用函数则包含

//include_once("inc/check_type.php"); // 如需要使用类型检验函数则包含

//如已包含auth.php,则无须包含conn.php

?>

页面标题

echo "hello OA";

?>

程序运行结果

3.2 数据库连接函数

参考以下程序代码read.php,访问我们之前建立的STUDENT表

include_once("inc/conn.php");

$query = "SELECT * from STUDENT";

$cursor= exequery($connection,$query);

/*

exequery 是OA系统inc/conn.php包装的SQL语句执行函数,$connection是数据库的连接标识符

*/

if($ROW=mysql_fetch_array($cursor))

$NAME=$ROW["NAME"];

echo $NAME;

?>

程序运行结果

从这段程序可以看出,使用OA系统提供的系统头文件和函数,访问数据库将是一件很轻松的事,不用操心数据库的连接参数等问题,只需简单的写下SQL 语句,执行它。

以下这段程序,将删除STUDENT表的所有数据。

include_once("inc/conn.php");

$query = "delete from STUDENT";

exequery($connection,$query);

?>

Mysql数据库的连接参数在 webroot\inc\oa_config.php文件中配置,可自行修改连接参数。

3.3 系统变量

OA系统提供了5个通过SESSION保存的系统变量,分别是

$LOGIN_USER_ID 用户ID

$LOGIN_USER_PRIV 用户角色ID

$LOGIN_DEPT_ID 用户部门ID

$LOGIN_AVATAR 用户头像

$LOGIN_THEME 用户界面主题

如需使用这些系统变量,程序需要包含auth.php,如下代码:

include_once("inc/auth.php");

echo "我的登录用户ID是".$LOGIN_USER_ID; //本句中的.表示字符串连接

?>

因为执行这个程序前,必须先登录,我们首先定义一项个人网址,以便执行这个需要登录的程序。

程序执行结果

以下一段程序,可以分别取出用户姓名、用户角色名称、在线时间至$USER_NAME、$USER_PRIV和$ONLINE变量。

include_once("inc/auth.php");

$query = "SELECT * from USER where USER_ID='$LOGIN_USER_ID'";

$cursor= exequery($connection,$query);

if($ROW=mysql_fetch_array($cursor))

{

$USER_NAME=$ROW["USER_NAME"];

$USER_PRIV=$ROW["USER_PRIV"];

$ONLINE=$ROW["ONLINE"];

$query1 = "SELECT * from USER_PRIV where USER_PRIV='$USER_PRIV'";

$cursor1= exequery($connection,$query1);

if($ROW=mysql_fetch_array($cursor1))

$USER_PRIV=$ROW["PRIV_NAME"];

}

?>

3.4 系统函数

3.4.1 常用函数包含方法:include_once("inc/utility.php");

如已包含auth.php,则无需包含

Message($TITLE,$CONTENT)显示一个提示框如图

标题和内容可通过参数指定

Button_Back()显示一个返回按钮,用于访回下一页面

find_id($STRING,$ID)查询用逗号隔开的$STRING字符串中,是否包含$ID 如find_id("abc,def,ghq","abc"); 返回值是true

3.4.2 一般系统函数包含方法:include_once("inc/utility_all.php");

format_date($STRING1)返回形如 1999年2月1日

get_week($STRING1)返回形如六

format_money($STR)返回金额格式,形如19.00

compare_date($DATE1,$DATE2)日期比较,DATE1=DATE2 返回0,DATE1>DATE2 返回1,DATE1

compare_time($TIME1,$TIME2)时间比较,time1=time2 返回0,time1>time2 返回1,time1

compare_date_time($DATE_TIME1,$DATE_TIME2)日期+时间比较

csubstr(&$str, $start=0, $long=0, $ltor=true, $cn_len=2)

中文字符串截取函数

一些中文字符串截取函数经常有一些问题,例如在一些自动换行程序中

$a=“1中2”;

经两次截取后,

csubstr($str,$a,0,2);

csubstr($str, $a, 2,2)

由于载取位置指向“中”的右字节,可能会是这样的结果

1, 2

用本函数会产生正确的结果

1中, 2

# start 开始位置,从0开始

# long = 0 则从start 一直取到字符串尾

# ltor = true 时从左到右取字符,false 时到右到左取字符

# $cn_len 中文字符按字节取还是字数取,如果按字数取,则一个中文当一个字节计算

is_ip($IP)检查IP是否合法

is_dept_priv($DEPT_ID)查看$DEPT_ID是否属于本人管理范围

my_dept_tree($DEPT_ID,$DEPT_CHOOSE,$POST_OP)多级部门下拉菜单,支持按管理范围列出,格式为

3.5.2 人员多选组件

人员多选组件的程序是webroot\module\user_select,调用方法是在前台页面使用javascript,举例如下:

 

3.5.2 部门多选组件

部门多选组件的程序是webroot\module\dept_select,调用方法是在前台页面使用javascript,举例如下:

 

3.5.2 部门单选组件

部门单选组件的使用举例如下,三个参数含义分别为上级部门ID,选中的部门ID,是否按管理范围显示:

四、发布二次开发的功能模块

4.1准备模块目录

例如,在webroot\general下建议一个目录student,作为自己开发模块的目录,将程序放置于该目录下,默认页面是index.php或index.html或index.htm

4.2 定制菜单

如图,按界面上说明的要求定义好菜单

将一个gif图片student.gif拷贝至webroot\images\menu下

在角色权限设置中,分好该模块权限。

测试发布的二次开发模块

为便于用户开发自己的模块,通达科技在用户服务区提供了Office Anywhere 部份模块源码的下载,供开发人员参考。

五、JAVA应用程序扩展规范

通过安装通达MYJAVA应用服务器软件,可以使得通达OA支持Java应用程序,Java程序文件根目录是webroot\app,可通过Session变量LOGIN_USER_ID获取用户登录OA系统的ID。

通达进销存软件内置了MYJAVA应用服务器,Java代码规范可参考通达进销存软件。

相关文档
相关文档 最新文档