通达OA二次开发入门指南

一、概述

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

本文将从入门角度,为您介绍通达OA二次开发的基础知识和环境准备,帮助您快速上手OA二次开发。

二、技术栈概览

通达OA主要采用以下技术栈:

技术组件 版本 说明
PHP 7.2+ 主要开发语言
MySQL 5.x 数据库管理系统
Nginx - Web服务器
Redis - 缓存服务
Zend - PHP扩展加速

2.1 技术架构图

2.2 系统服务架构图

三、开发环境搭建

3.1 系统服务介绍

在Windows平台下,通达OA注册了9个系统服务:

  • Office_Web:管理Nginx进程的服务,作为Web Server
  • MySQL5_OA:MySQL数据库服务
  • Office_Redis:Redis缓存服务
  • OfficeDaemon:守护进程服务
  • OfficeIm:即时通讯服务
  • OfficeIndex:全文索引服务
  • OfficeMail:邮件服务
  • OfficePOP3:POP3邮件接收服务
  • OfficeTask:任务调度服务

这些服务可以通过控制面板 → 管理工具 → 服务进行查看和管理。

3.2 开发工具准备

推荐开发环境:

  1. 代码编辑器:Visual Studio Code、PHPStorm等
  2. 数据库管理工具:Navicat、MySQL Workbench、phpMyAdmin
  3. 浏览器:Chrome(推荐)、Firefox

3.3 本地开发配置

在进行二次开发前,建议先熟悉以下配置文件:

  • MYOA\bin\service.ini:服务配置文件
  • MYOA\bin\php.ini:PHP配置文件
  • MYOA\mysql5\my.ini:MySQL配置文件
  • MYOA\webroot\inc\db_config.php:数据库连接配置

四、核心概念

4.1 模块化架构

通达OA采用模块化架构设计,所有应用模块都存放在 MYOA\webroot\general 目录下。每个模块拥有独立的目录结构,可以独立开发、部署和维护。

4.2 权限验证机制

通达OA为保证数据安全,所有PHP页面原则上都需要包含权限验证程序:

复制代码
include_once("inc/auth.inc.php");

该文件包含session合法性验证、访问路径授权验证等功能。

4.3 页面渲染规范

为保证界面显示标准统一,所有包含HTML输出的页面需要包含:

复制代码
$HTML_PAGE_TITLE = _("页面标题");
include_once("inc/header.inc.php");

4.4 数据安全过滤

通达OA提供了用户输入数据过滤机制,通过 common.inc.php$_GET$_POST$_COOKIE 等数据进行安全过滤。

五、开发流程

5.1 开发流程图

5.2 开发前准备

  1. 了解需求:明确需要开发的功能模块
  2. 分析现有模块:参考类似功能的实现方式
  3. 数据库设计:规划数据表结构
  4. 模块命名:遵循OA命名规范

5.2 开发步骤

  1. 建立模块目录 :在 general 目录下创建模块文件夹
  2. 创建菜单:在系统管理中注册菜单
  3. 分配权限:为角色分配菜单权限
  4. 编写代码:实现业务逻辑
  5. 测试验证:确保功能正常运行

5.3 调试技巧

  • 开启PHP错误日志:MYOA\logs\php_errors.log
  • 使用浏览器开发者工具调试前端
  • 利用数据库管理工具查询数据状态

六、Hello World示例

下面是一个简单的"Hello World"模块示例:

复制代码
<?php
$HTML_PAGE_TITLE = _("我的第一个模块");
include_once("inc/auth.inc.php");
include_once("inc/header.inc.php");

echo "<h1>" . _("Hello, OA二次开发!") . "</h1>";

include_once("inc/footer.inc.php");
?>

将上述代码保存为 MYOA\webroot\general\helloworld\index.php,然后在系统管理中注册菜单即可访问。

相关推荐
程序员黑豆6 小时前
Java类型推断完全指南:从var到菱形运算符,掌握使用限制与最佳实践
java·前端·ai编程
小虎AI生活7 小时前
WorkBuddy 资料库架构解析:MD + CSV + HTML 三种载体的"流水线"设计
ai编程
咖啡星人k8 小时前
想私有化部署 AI 开发平台?MonkeyCode 给出的答案是开源 + 离线
人工智能·大模型·ai编程·monkeycode
神奇霸王龙11 小时前
Agent 准入门控屠夫:5 旗舰 4 维度评估
linux·运维·数据库·ai·ai作画·agent·ai编程
安全指北针11 小时前
AI编程工具供应链安全实战:当你的AI编码助手成为跳板
人工智能·安全·ai编程
tealcwu11 小时前
【已解决】Gemini突然提示不支持所在国家?
ai编程
ZzT11 小时前
把 AI Coding 工作流做成插件:资产、契约与运行时的三层拆分
aigc·openai·ai编程
程序员老刘14 小时前
Flutter 3.47 更新要点:Material 正式分家,老项目先别急着更新
flutter·ai编程·客户端
全栈弄潮儿15 小时前
一周总结:AI 编程入门最重要的 3 个原则
chatgpt·openai·ai编程
Nturmoils17 小时前
鸿蒙健康教练接入蓝耘:一句话打卡,模型估热量,网关记账
ai编程