泛微OA二次开发基础培训文档

梦想与她 提交于 2020-01-03 17:32:39

 

一  ECOLOGY系统框架结构

Ecology系统说明
e-cology8.0文件页面编码为UTF-8
e-cology8.0 JDK版本 1.6
e-cology8.0 应用服务器为Resin

Ecology安装目录说明

  • ecology:OA主程序目录
  • JDK:Java目录
  • Resin:应用服务器的目录

ecology主要目录说明

ecology
     classbean 存放编译后的CLASS文件 
     js 系统中使用的JAVASCRIPT和VBSCRIPT脚本
     css 系统中JSP页面使用的样式
     images
     images_face
     images_frame 系统中使用的图片的存放目录
     log 系统中日志存放目录
     sqlupgrade升级SQL脚本目录
     workflow 各功能分文件夹存放每个功能的文件
     WEB-INF
          lib 系统依赖Jar文件目录
          prop 系统配置文件存放
          service 系统的接口配置文件的存放
          securitylog 安全补丁日志
          securityXML自定义安全补丁配置目录

     

二 JSP页面

  1. 一个jsp页面通常需要包含什么内容
<%@ page language="java" contentType="text/html; charset=GBK" %> 
<%@ page import="weaver.general.*" %>
<%@ page import="weaver.conn.*" %>
<%@ page import="java.util.*" %>  <!--导入需要的JAVA程序-->
<%@ include file="/systeminfo/init.jsp" %> <!--验证用户是否已经登录系统,获取用户的基本信息-->
<jsp:useBean id="rs" class="weaver.conn.RecordSet" scope="page" />  <!--数据库操作类,通过RS操作数据-->
<HTML>
<HEAD>
	<LINK href="/css/Weaver.css" type=text/css rel=STYLESHEET>   <!--引入CSS-->
	<SCRIPT language="javascript" src="/js/weaver.js"></script>  <!--引入通用脚本文件-->
</head>
<BODY>
<%
//验证用户权限,如果不需要验证权限,可以不用一下三句
if (!HrmUserVarify.checkUserRight("REPORT:VIEW" ,user) ) { 
	response.sendRedirect("/notice/noright.jsp"); 
	return; 
}
%>

<%
	String imagefilename = "/images/hdMaintenance.gif";
	String titlename = "基本页面";
	String needfav ="1";
	String needhelp ="";
%>
<%@ include file="/systeminfo/TopTitle.jsp" %>


<!--此处设置右键菜单-->
<%@ include file="/systeminfo/RightClickMenuConent.jsp" %>
<%
RCMenu += "{菜单1,javascript:weaver.submit(),_self} " ;   //这个菜单触发脚本(一个菜单包含两行)
RCMenuHeight += RCMenuHeightStep;

RCMenu += "{菜单2,/hrm/hrmrespource.jsp,_self} " ;   //这个菜单可以去其他页面
RCMenuHeight += RCMenuHeightStep;
%>
<%@ include file="/systeminfo/RightClickMenu.jsp" %>


<table width=100% height=100% border="0" cellspacing="0" cellpadding="0">
<colgroup>
<col width="10">
<col width="">
<col width="10">
<tr>
	<td height="10" colspan="3"></td>
</tr>
<tr>
	<td ></td>
	<td valign="top">
		<TABLE class=Shadow>
		<tr>
		<td valign="top">
		
		<!--具体信息-->
		<div>具体信息</div>
		
		
		</td>
		</tr>
		</table>
		</td>
<td ></td>
</tr>
</table>

</body></html>



     

      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表示英文显示名称,

      languageid=9表示繁体显示名称.

 

      3、JAVA程序的基本组成

在ECOLOGY中开发JAVA程序建议继承weaver.general. BaseBean,在BaseBean中主要封装了两个方法:写日志文件,获取配置文件中的参数值   

       写日志的方法:writeLog(Object obj) 日志会输出到 weaver/ecology/log/ecology中

        获取配置文件数据:getPropValue(String fname , String key)

        比如获取weaver.properties中的DriverClasses的值,代码如下:

        getPropValue(“weaver”,” DriverClasses”)

package weaver.interfaces.workflow.action;
import java.text.SimpleDateFormat;
import java.util.Date;
import weaver.soa.workflow.request.RequestInfo;
import weaver.general.BaseBean;
import java.text.SimpleDateFormat;
import java.util.*;
import weaver.conn.RecordSet;
import weaver.general.Util;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.Cell;
import weaver.soa.workflow.request.DetailTable;
import weaver.soa.workflow.request.Property;
import weaver.soa.workflow.request.Row;
/**
 * @Auther: bw.ren
 * @Date: 2020-1-3 14:51
 * @Description:
 */
public class TestAction extends  BaseBean  implements weaver.interfaces.workflow.action.Action{
    private SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    @Override
    public String execute(RequestInfo requestInfo) {
        //获取配置文件参数值
        String var18 = this.getPropValue("actionProp", "table_name");
        writeLog("打印日志:"+formatter.format(new Date()));
        return Action.SUCCESS;
    }
}

 

三 添加多语言版本标签

添加的标签请使用负的ID,ID值通过sql获取

Select min(id)-1 from HtmlLabelIndex

然后使用下面的sql插入标签,注意修改下面sql中对应的值,如果是oracle数据库,请把“GO”替换成“/”

delete from HtmlLabelIndex where id=-32166
GO
delete from HtmlLabelInfo where indexid=-32166
GO
INSERT INTO HtmlLabelIndex values(-32166,'预算项目维护')
GO
INSERT INTO HtmlLabelInfo VALUES(-32166,'预算项目维护',7)
GO
INSERT INTO HtmlLabelInfo VALUES(-32166,'Budget project maintenance',8)
GO
INSERT INTO HtmlLabelInfo VALUES(-32166,'預算項目維護',9)
GO

四流程相关数据存储

常用流程相关存储说明,详情见表结构说明文档,以下说明以自定义表单为例,自定义表单isbill=1,数据库存储的表名为id<0对应表名为 formtable_main_(id*-1)id>0为固定表名,参见workflow_bill.tablename

数据库表名 中文说明 备注
workflow_base 流程基本信息 isbill=1
workflow_bill 流程表单信息 id > 0固定表名
id < 0 动态生成
workflow_billfield 表单字段信息  
workflow_billdetailtable 表单明细表  
workflow_nodebase 节点信息  
workflow_flownode 流程节点信息  
workflow_nodelink 流程出口信息  
workflow_nodegroup 节点操作人信息  
workflow_groupdetail 节点操作人详情  
workflow_requestbase 请求基本信息  
workflow_currentoperator 请求节点操作人  
workflow_requestlog 请求签字意见  
workflow_nownode 请求当前节点  
workflow_browserurl 系统浏览按钮信息  
workflow_selectitem 下拉框信息  

 

五 人力资源相关数据存储 

表名 说明 备注
HrmResource 人力资源基本信息表 -
HrmResource_online 人员在线信息表 -
HrmResourceManager 系统管理员信息表 -
HrmDepartment 人力资源部门表 -
HrmDepartmentDefined 人力资源部门自定义字段信息表 -
HrmSubCompany 人力资源分部表 -
hrmroles 角色信息表 -
hrmrolemembers 角色人员 -
hrmjobtitles 岗位信息表 -

六 文档相关相关数据存储 

表名 说明 备注
Docdetail 文档信息表 -
DocDetailLog 文档操作日志表 -
DocImageFile 文档附件图片表 -
ImageFile 文件存放信息表 -
shareinnerdoc 文档共享表(针对内部人员) -
DocShare 文档共享信息表 -
DocShareDetail 文档共享信息详细表 -
DocSecCategory 文档子目录表 -

 

七 数据源 DataSource

该接口主要用来在e-cology配置和异构系统的数据库的链接方式,通过此链接在e-cology中直接操作其他系统的数据。该接口适用于SQLSERVER,ORACLE,MYSQL,DB2,INFORMIX,SYBASE结构型数据库。

后台设置 
路径:集成中心– 数据源设置

 

程序调用

//引入相关的类
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import weaver.general.BaseBean;
import weaver.general.StaticObj;
import weaver.interfaces.datasource.DataSource;


//调用数据源生成jdbc链接
DataSource ds = (DataSource)StaticObj.getServiceByFullname(("datasource.local"),DataSource.class);
//local为配置的数据源标识
        Connection conn = null ;
        try{
            conn = ds.getConnection();
            ResultSet rs = conn.createStatement().executeQuery("select top 10 lastname,password from hrmresource");
            while(rs.next()){
                System.out.println("name-->"+rs.getString("lastname")+" pwd-->"+rs.getString("password"));
            }
            rs.close();
        }catch(Exception e){
            writeLog(e);
        }finally{
            try {
                conn.close();
            } catch (SQLException e) {

            }
        }

注意点

数据源返回的JDBC Connection在使用完毕时,必须记得关闭链接。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!