泛微OAecology二次开发实例开发完整说明

合集下载

Ecology二次开发-数据源配置

Ecology二次开发-数据源配置
数据端口
property="dbname"value=""
数据库名称
property="user"value=""
数据访问用户名
property="password"value=""
数据访问密码
<set property="minconn" value="5" />
<set property="maxconn" value="10" />
</construct>
</invoke-factory>
</service-point>
</module>
配置文件说明
对以上配置中标黄的选项进行一下简要的说明
<module id="datasource" version="1.0.0">
<service-point id="ecology" interface="weaver.interfaces.datasource.DataSource">
<invoke-factory>
<construct class="weaver.interfaces.datasource.BaseDataSource">
<set property="port" value="1433" />
<set property="dbname" value="ecology1231" />

泛微e9 二次开发 简书

泛微e9 二次开发 简书

泛微e9 二次开发简书泛微e9是一款可定制和灵活配置的企业级管理软件平台,因其功能强大且易于使用,深受广大企业用户的欢迎。

很多企业都选择使用泛微e9来支持其日常运营,因为它能够简化企业流程、提高生产力并最终改善企业管理。

在这里,我们将介绍泛微e9二次开发的一些基本内容以及在简书上找到更多有关泛微e9二次开发的资料。

什么是泛微e9二次开发?泛微e9的二次开发是指在泛微e9的平台上进行软件开发,以满足企业特定需求的过程。

通过二次开发,企业可以轻松地将泛微e9软件定制到其特定业务流程和工作流程,并提高企业的生产力和效率。

二次开发可以帮助企业更好地满足其业务需求,并提供更好的用户体验。

虽然泛微e9本身已经具有强大的功能,但很多企业在其业务方面有个性化的需求,这种个性化需求可以通过泛微e9的二次开发来实现。

泛微e9二次开发的好处泛微e9二次开发为企业提供了以下好处:1. 定制化 - Enterprise需要根据其特定的业务流程和工作流程来进行定制泛微e9。

二次开发帮助企业满足其个性化的业务需求,并提高用户体验。

2. 增强功能 - 通过二次开发,企业能够添加新功能或改进泛微e9现有功能。

这有助于企业提高其生产力和效率。

3. 提高效率 - 二次开发可简化和自动化企业的流程,并减少手动操作和重复性工作。

4. 提高生产力 - 通过减少业务流程中的瓶颈,企业可以提高生产力和速度,以更快地满足客户需求。

简书上找到关于泛微e9二次开发的资料简书是一个知识共享社区,在这里可以发现关于泛微e9二次开发的有趣话题和资料。

有很多知名的泛微e9开发者都在简书上分享他们的经验和工作成果。

有时候,泛微e9开发者可能会遇到一些问题或困难,这时候,可以在简书上寻求帮助并获得宝贵的建议和经验。

以下是在简书上找到的一些优秀的泛微e9二次开发资源:1.泛微官方技术论坛 - 官方的泛微技术论坛是泛微e9二次开发的主要社区。

这里有大量的开发者在分享它们的开发经验和工作成果。

泛微表单建模二次开发案例

泛微表单建模二次开发案例

1.根据建模数据定时创建流程每个月初触发客户回访记录流程package weaver.formmode.apps;import java.util.ArrayList;import java.util.List;import weaver.conn.RecordSet;import weaver.file.Prop;import weaver.general.BaseBean;import weaver.general.Util;import weaver.hrm.resource.ResourceComInfo;import weaver.interfaces.schedule.BaseCronJob;import weaver.soa.workflow.request.MainTableInfo;import weaver.soa.workflow.request.Property;import weaver.soa.workflow.request.RequestInfo;import weaver.soa.workflow.request.RequestService;import com.weaver.formmodel.util.DateHelper;/*** 每个月初定时创建客户回访信息* @author mc*/public class CreateWorkflowJob extends BaseCronJob {private BaseBean beseBean = new BaseBean();public void execute() {//chuaString workflowid = Prop.getPropValue("kh", "workflowid");// 流程创建人String createor = Prop.getPropValue("kh", "createid");RecordSet rs = new RecordSet();rs.executeQuery("select * from uf_khinfo ");while(rs.next()){String gsmc = Util.null2String(rs.getString("gsmc"));String khmc = Util.null2String(rs.getString("khmc"));String khjl = Util.null2String(rs.getString("khjl"));ResourceComInfo rci = null;try {rci = new ResourceComInfo();} catch (Exception e1) {e1.printStackTrace();}String khmcName = rci.getLastname(khmc);String topTitle = gsmc+"-"+khmcName+"("+ DateHelper.getCurrentMonth() +")"; // 创建流程RequestService requestService = new RequestService();RequestInfo requestInfo = new RequestInfo();requestInfo.setWorkflowid(workflowid);//流程类型idrequestInfo.setCreatorid(createor);//创建人requestInfo.setDescription(topTitle);//设置流程标题requestInfo.setRequestlevel("0");//0 正常,1重要,2紧急requestInfo.setIsNextFlow("1");//流转到下一节点0:不自动流程其它:自动流程MainTableInfo mainTableInfo = new MainTableInfo();List<Property> fields = new ArrayList<Property>();Property field = null;/*** 主表* 格式:* {* rwmc: '任务名称-001',* rwfzr: '杨文元',* ksrq: '2019-08-08',* }*/field = new Property();field.setName("khjl");field.setValue(khjl);fields.add(field);field = new Property();field.setName("khmc");field.setValue(gsmc);fields.add(field);field = new Property();field.setName("khjl");field.setValue(khjl);fields.add(field);field = new Property();field.setName("fzr");field.setValue(khmc);fields.add(field);Property[] fieldarray = (Property[]) fields.toArray(new Property[fields.size()]); mainTableInfo.setProperty(fieldarray);requestInfo.setMainTableInfo(mainTableInfo);int newrequestid = 0;try {newrequestid = Util.getIntValue(requestService.createRequest(requestInfo));} catch (Exception e) {e.printStackTrace();}beseBean.writeLog("创建成功的流程requestid:"+newrequestid);}}}配置文件2.建模中代码创建附件/*** 从网络上抓取文件存入系统中* @param modeid* @param userid* @param fileurl* @param filename* @return*/public int buildFile(int modeid,int userid,String fileurl,String filename) {RecordSet rs = new RecordSet();OutputStream os = null;ZipOutputStream filezipOut = null;InputStream source = null;int retDocid = 0;boolean needzip = false;try {SystemComInfo syscominfo = new SystemComInfo();String createdir = FileUpload.getCreateDir(syscominfo.getFilesystem());if( (syscominfo.getNeedzip()).equals("1") ) needzip = true ;FileManage.createDir(createdir) ;DefaultFileRenamePolicy defpolicy = new DefaultFileRenamePolicy() ;String refilename = weaver.general.Util.getRandom();String filepath = createdir+refilename;if(needzip) filepath+=".zip";java.io.File outfile = new java.io.File(filepath);outfile = defpolicy.rename(outfile);String iszip = "1" ;if(needzip){filezipOut = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(outfile)));filezipOut.setMethod(ZipOutputStream.DEFLATED); //设置压缩方法filezipOut.putNextEntry(new ZipEntry(refilename)) ;//正文只能是WORD文档os = filezipOut ;}else{os = new BufferedOutputStream(new FileOutputStream(outfile)) ;iszip = "0";}//通过HTTP方式获取文件URL url = new URL(fileurl);HttpURLConnection conn = (HttpURLConnection) url.openConnection();BufferedInputStream input = new BufferedInputStream(conn.getInputStream());long filesize = 0;byte[] buffer = new byte[1024];int count = 0;while ((count = input.read(buffer)) > 0) {os.write(buffer, 0, count);filesize++;}os.flush();if(os!=null) os.close();if(filezipOut!=null) filezipOut.close();if(input!=null) input.close();//以下将文件放至IMAGEFILE表中int imageid = 0;String imagefileused = "1"String isencrypt = "1" ;String originalfilename = filename;//原始文件名String contenttype = "HTTP";char separator = Util.getSeparator() ;imageid=imageFileIdUpdate.getImageFileNewId();String para = ""+imageid + separator + originalfilename + separator+ contenttype + separator + imagefileused + separator + filepath + separator+ iszip + separator + isencrypt + separator + filesize ;rs.executeProc("ImageFile_Insert",para);//文件FILEID处理DocManagerNoRequest docManagerNoRequest = new DocManagerNoRequest();int maincategory = Util.getIntValue((String)staticobj.getObject("DocChangeSetting.maincategory"), 0);int subcategory = Util.getIntValue((String)staticobj.getObject("DocChangeSetting.subcategory"), 0);int seccategory = Util.getIntValue((String)staticobj.getObject("DocChangeSetting.seccategory"), 0);if(modeid > 0){rs.executeSql("select * from modeinfo where id="+modeid);if(rs.next()){maincategory = Util.getIntValue(rs.getString("maincategory"),0);subcategory = Util.getIntValue(rs.getString("subcategory"),0);seccategory = Util.getIntValue(rs.getString("seccategory"),0);}}//填补文档信息String extname = "";//扩展名String imageFileName = Util.null2String(filename);int tempPos = stIndexOf(".");if (tempPos != -1) {extname = imageFileName.substring(tempPos + 1);}Map dataMap=new HashMap();String docsubject="";if(tempPos==-1) docsubject = originalfilename;else docsubject = originalfilename.substring(0, tempPos);dataMap.put("docsubject",docsubject);dataMap.put("doccreaterid",""+userid);dataMap.put("docCreaterType","1");dataMap.put("maincategory",""+maincategory);dataMap.put("subcategory",""+subcategory);dataMap.put("seccategory",""+seccategory);dataMap.put("fileids",""+imageid);docManagerNoRequest.UploadDocNoRequest(dataMap);retDocid = docManagerNoRequest.getId();//文档IDrs.executeSql("update docdetail setownerid="+userid+",doccreatedate='"+getCurrentDate()+"',doccreatetime='"+getCurrentTime()+"' where id="+retDocid);rs.executeSql("update docdetail set docPublishType='2' where id ="+retDocid);//处理文档共享rs.executeSql("INSERT INTOShareinnerdoc(sourceid,type,content,seclevel,sharelevel,srcfrom,opuser,sharesource)values('"+docManagerNoRequest.getId()+"','1','"+userid+"','10','3','80','"+userid+"','0')");}catch(Exception e) {writeLog(e);} finally {try {if (os != null) os.close();if(filezipOut!=null) filezipOut.close();}catch(Exception e) {writeLog(e);}return retDocid;}}3.甘特图插件<%@page language="java"contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@include file="./init_wev8.jsp"%><!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type"content="text/html; charset=UTF-8"><title>甘特图</title><link rel="stylesheet"type="text/css"href="./core/jquery-ui.css"/><link rel="stylesheet"type="text/css"href="./reset.css"/><link rel="stylesheet"type="text/css"href="./core/jquery-gantt.css"/><script language="javascript"src="/js/datetime_wev8.js"></script><script language="javascript"src="/js/JSDateTime/WdatePicker_wev8.js"></script><script language="javascript"src="/js/ecology8/selectbox/js/jquery.selectbox-0.2_wev8.js"></script> <style type="text/css">body {font-family: tahoma, verdana, helvetica;font-size: 0.8em;padding: 10px;width: 90%;height: 95%;}</style></head><body><div style="padding-bottom:5px;width:400px;">开始日期:<input name="start"id="start"value=""type="hidden"class="wuiDate"_callback="calldate"/>&nbsp;&nbsp;结束日期:<input name="end"id="end"value=""type="hidden"class="wuiDate" _callback="calldate"/>&nbsp;&nbsp;<input type="button"class="middle e8_btn_top_first"onclick="query()"value="查询"/> </div><div id="ganttChart"></div><br/><br/><div id="eventMessage"></div><script type="text/javascript"src="./core/jquery-1.4.2.js"></script><script type="text/javascript"src="./core/date.js"></script><script type="text/javascript"src="./core/jquery-ui.js"></script><script type="text/javascript"src="./core/jquery-gantt.js"charset="utf-8"></script><script type="text/javascript"src="./data.js"></script><script type="text/javascript">$(function () {//发送ajax 请求数据$.ajax({url:"/formmode/apps/gantt/data.jsp",data:{action:"init"},dataType:"json",success:function(result){for(var i=0;i<result.length ;i++){// 将日期格式转换为毫秒的形式:如“yyyy-MM-dd --> 1221456783545var s = result[i].series[1].start.split("-");var s1 = result[i].series[1].end.split("-")var start = new Date(s[0],s[1]-1,s[2]);var end = new Date(s1[0],s1[1]-1,s1[2]);result[i].series[1].start = start;result[i].series[1].end = end;}//console.log(result[0].series[1].start.getDate());if(result.length>0){init(result);}}})});function init(ganttData){$("#ganttChart").ganttView({data: ganttData,slideWidth: $(document).width()-400,//右边面板大小behavior: {draggable:false,//禁止拖动// 点击进度条触发事件onClick: function (data) {var msg = "You clicked on an event: { start: " +data.start.toString("M/d/yyyy") + ", end: " + data.end.toString("M/d/yyyy") + " }";$("#eventMessage").text(msg);window.open("/formmode/view/AddFormMode.jsp?modeId=11&formId=-30&type=0&billid="+data.i d);},onResize: function (data) {var msg = "You resized an event: { start: " +data.start.toString("M/d/yyyy") + ", end: " + data.end.toString("M/d/yyyy") + " }";$("#eventMessage").text(msg);},onDrag: function (data) {var msg = "You dragged an event: { start: " +data.start.toString("M/d/yyyy") + ", end: " + data.end.toString("M/d/yyyy") + " }";$("#eventMessage").text(msg);}}});}function query(){//获取到开始日期和结束日期var start = jQuery("#start").val();var end = jQuery("#end").val();if(start=='' && end=='') return;$.ajax({url:"/formmode/apps/gantt/data.jsp",data:{action:"query",start:start,end:end},dataType:"json",success:function(result){jQuery("#ganttChart").empty();for(var i=0;i<result.length ;i++){var s = result[i].series[1].start.split("-");var s1 = result[i].series[1].end.split("-")var start = new Date(s[0],s[1]-1,s[2]);var end = new Date(s1[0],s1[1]-1,s1[2]);result[i].series[1].start = start;result[i].series[1].end = end;}if(result.length>0){init(result);}}})}function calldate(){ }function stringToDate(dateStr,separator){if(!separator){separator="-";}var dateArr = dateStr.split(separator);var year = parseInt(dateArr[0]);var month;//处理月份为04这样的情况if(dateArr[1].indexOf("0") == 0){month = parseInt(dateArr[1].substring(1));}else{month = parseInt(dateArr[1]);}var day = parseInt(dateArr[2]);var date = new Date(year,month -1,day);return date;}</script></body></html>4.组织架构图插件<html><head><meta http-equiv="Content-Type"content="text/html; charset=UTF-8"> <title>组织结构图</title><link rel="stylesheet"href="css/bootstrap.min.css"/><link rel="stylesheet"href="css/jquery.jOrgChart.css"/><link rel="stylesheet"href="css/custom.css"/><link href="css/prettify.css"type="text/css"rel="stylesheet"/><script type="text/javascript"src="prettify.js"></script><script type="text/javascript"src="/formmode/apps/orgchart/css/jquery.min.js"></script> <script type="text/javascript"src="/formmode/apps/orgchart/css/jquery-ui.min.js"></script> <script src="jquery.jOrgChart.js"></script><style>a {text-decoration: none;color: #fff;font-size: 12px;}a:hover {color: red;text-decoration: none;}.jOrgChart.node {width: 120px;height: 50px;line-height: 50px;border-radius: 4px;margin: 0 8px;cursor: pointer;}</style></head><body onload="prettyPrint();"><div id='jOrgChart'style="width: 1900px;height:1000px;overflow-x: auto;margin:0 auto"></div> <script type='text/javascript'>$(function(){//数据返回$.ajax({url: "./data.jsp",//url: "test.json",type: 'GET',dataType: 'JSON',data: {action: 'org_select'},success: function(result){var showlist = $("<ul id='org' style='display:none'></ul>");showall(result.data, showlist);$("#jOrgChart").append(showlist);$("#org").jOrgChart( {chartElement : '#jOrgChart',//指定在某个dom生成jorgchartdragAndDrop : false //设置是否可拖动});}});});function showall(menu_list, parent) {$.each(menu_list, function(index, val) {if(val.childrens.length > 0){var li = $("<li></li>");li.append("<a href='javascript:void(0)'onclick=getOrgId("+val.id+");>"++"</a>").append("<ul></ul>").appendTo(parent);//递归显示showall(val.childrens, $(li).children().eq(1));}else{$("<li></li>").append("<a href='javascript:void(0)'onclick=getOrgId("+val.id+");>"++"</a>").appendTo(parent);}});}</script></body></html>。

泛微二次开发所需要的知识

泛微二次开发所需要的知识

泛微二次开发所需要的知识
泛微二次开发是指在泛微OA系统中进行二次开发,以满足个性化的业务需求和提升工作效率。

在进行泛微二次开发之前,需要掌握以下知识:
步骤一:了解泛微OA系统
作为一个泛微二次开发者,首先需要了解泛微OA系统的概念、功能以及基本架构。

只有深入了解泛微OA系统才能对二次开发对接点有更清晰的认识,从而更好地完成二次开发任务。

步骤二:掌握JAVA编程
泛微OA系统的二次开发使用的是JAVA编程语言,所以二次开发者需要掌握JAVA编程。

特别是在泛微OA系统中,JAVA编程的应用非常广泛,包含了工作流引擎、表单控件、数据集成等方面。

只有掌握了JAVA编程知识,才能更好地进行泛微OA系统的二次开发。

步骤三:熟悉Web开发
泛微OA系统作为一款B/S架构的软件,二次开发涉及到了Web 开发知识,包括HTML、CSS、JavaScript等方面。

因此,二次开发者需要熟悉Web开发知识,才能更好地进行泛微OA系统的二次开发。

步骤四:掌握数据库知识
泛微OA系统中的业务数据存储在数据库中,因此,二次开发者需要具备数据库相关的知识,包括SQL语句、数据表设计等。

只有掌握了数据库知识,才能更好地实现系统的数据存储和管理。

步骤五:了解相关API
泛微OA系统提供了丰富的API,包含了表单API、流程API、组织人员API等方面。

二次开发者需要了解相关API,从而能够更快地实现对系统的定制化开发,满足不同用户的需求。

总之,泛微二次开发要求开发者具备一定的技术功底和相关知识背景。

需要花费时间进行学习和探索,才能在泛微OA系统中运用这些知识,做出更加优秀的产品。

Ecology二次开发-系统权限

Ecology二次开发-系统权限
VARCHAR2(100)
Y
权限明细名称
RIGHTDETAIL
VARCHAR2(100)
Y
代码,此代码会具体应用到程序当中
RIGHTID
INTEGER
Y
外键,SystemRights.id
Columns ofSystemRightGroups/权限组
Name
Type
Nullable
Default
Comments
response.sendRedirect("/notice/noright.jsp");
return;
}
%>
7-中文简体
8-英文
9-中文繁体
RIGHTNAME
VARCHAR2(100)
Y
权限名称
RIGHTDESC
VARCHAR2(100)
Y
权限描述
Columns ofSystemRightDetail/权限明细
Name
Type
Nullable
Default
Comments
ID
INTEGER
RIGHTDETAILNAME
/
insertintoSystemRightDetail (id,rightdetailname,rightdetail,rightid)values(4462,'文档置顶权限','Document:Top',935)
从上面的代码可以看出,Ecology自身在添加权限的时候,是在数据里手工进行添加的,在添加权限前,会先执行三条delete语句,所以,当进行二次开发添加权限的时候,SystemRights.id和SystemRightsLanguage.id这两字段最好使用负数或者使用足够大的值,Ecology官方建议,如果使用正数,此数值最好在100000以上。

泛微OAecology二次开发实例开发完整说明书

泛微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中主要封装了两个方法:写日志文件,获取配置文件中的参数值。

泛微表单建模二次开发案例

泛微表单建模二次开发案例

1.根据建模数据定时创建流程每个月初触发客户回访记录流程package weaver.formmode.apps;import java.util.ArrayList;import java.util.List;import weaver.conn.RecordSet;import weaver.file.Prop;import weaver.general.BaseBean;import weaver.general.Util;import weaver.hrm.resource.ResourceComInfo;import weaver.interfaces.schedule.BaseCronJob;import weaver.soa.workflow.request.MainTableInfo;import weaver.soa.workflow.request.Property;import weaver.soa.workflow.request.RequestInfo;import weaver.soa.workflow.request.RequestService;import com.weaver.formmodel.util.DateHelper;/*** 每个月初定时创建客户回访信息* @author mc*/public class CreateWorkflowJob extends BaseCronJob {private BaseBean beseBean = new BaseBean();public void execute() {//chuaString workflowid = Prop.getPropValue("kh", "workflowid");// 流程创建人String createor = Prop.getPropValue("kh", "createid");RecordSet rs = new RecordSet();rs.executeQuery("select * from uf_khinfo ");while(rs.next()){String gsmc = Util.null2String(rs.getString("gsmc"));String khmc = Util.null2String(rs.getString("khmc"));String khjl = Util.null2String(rs.getString("khjl"));ResourceComInfo rci = null;try {rci = new ResourceComInfo();} catch (Exception e1) {e1.printStackTrace();}String khmcName = rci.getLastname(khmc);String topTitle = gsmc+"-"+khmcName+"("+ DateHelper.getCurrentMonth() +")"; // 创建流程RequestService requestService = new RequestService();RequestInfo requestInfo = new RequestInfo();requestInfo.setWorkflowid(workflowid);//流程类型idrequestInfo.setCreatorid(createor);//创建人requestInfo.setDescription(topTitle);//设置流程标题requestInfo.setRequestlevel("0");//0 正常,1重要,2紧急requestInfo.setIsNextFlow("1");//流转到下一节点0:不自动流程其它:自动流程MainTableInfo mainTableInfo = new MainTableInfo();List<Property> fields = new ArrayList<Property>();Property field = null;/*** 主表* 格式:* {* rwmc: '任务名称-001',* rwfzr: '杨文元',* ksrq: '2019-08-08',* }*/field = new Property();field.setName("khjl");field.setValue(khjl);fields.add(field);field = new Property();field.setName("khmc");field.setValue(gsmc);fields.add(field);field = new Property();field.setName("khjl");field.setValue(khjl);fields.add(field);field = new Property();field.setName("fzr");field.setValue(khmc);fields.add(field);Property[] fieldarray = (Property[]) fields.toArray(new Property[fields.size()]); mainTableInfo.setProperty(fieldarray);requestInfo.setMainTableInfo(mainTableInfo);int newrequestid = 0;try {newrequestid = Util.getIntValue(requestService.createRequest(requestInfo));} catch (Exception e) {e.printStackTrace();}beseBean.writeLog("创建成功的流程requestid:"+newrequestid);}}}配置文件2.建模中代码创建附件/*** 从网络上抓取文件存入系统中* @param modeid* @param userid* @param fileurl* @param filename* @return*/public int buildFile(int modeid,int userid,String fileurl,String filename) {RecordSet rs = new RecordSet();OutputStream os = null;ZipOutputStream filezipOut = null;InputStream source = null;int retDocid = 0;boolean needzip = false;try {SystemComInfo syscominfo = new SystemComInfo();String createdir = FileUpload.getCreateDir(syscominfo.getFilesystem());if( (syscominfo.getNeedzip()).equals("1") ) needzip = true ;FileManage.createDir(createdir) ;DefaultFileRenamePolicy defpolicy = new DefaultFileRenamePolicy() ;String refilename = weaver.general.Util.getRandom();String filepath = createdir+refilename;if(needzip) filepath+=".zip";java.io.File outfile = new java.io.File(filepath);outfile = defpolicy.rename(outfile);String iszip = "1" ;if(needzip){filezipOut = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(outfile)));filezipOut.setMethod(ZipOutputStream.DEFLATED); //设置压缩方法filezipOut.putNextEntry(new ZipEntry(refilename)) ;//正文只能是WORD文档os = filezipOut ;}else{os = new BufferedOutputStream(new FileOutputStream(outfile)) ;iszip = "0";}//通过HTTP方式获取文件URL url = new URL(fileurl);HttpURLConnection conn = (HttpURLConnection) url.openConnection();BufferedInputStream input = new BufferedInputStream(conn.getInputStream());long filesize = 0;byte[] buffer = new byte[1024];int count = 0;while ((count = input.read(buffer)) > 0) {os.write(buffer, 0, count);filesize++;}os.flush();if(os!=null) os.close();if(filezipOut!=null) filezipOut.close();if(input!=null) input.close();//以下将文件放至IMAGEFILE表中int imageid = 0;String imagefileused = "1"String isencrypt = "1" ;String originalfilename = filename;//原始文件名String contenttype = "HTTP";char separator = Util.getSeparator() ;imageid=imageFileIdUpdate.getImageFileNewId();String para = ""+imageid + separator + originalfilename + separator+ contenttype + separator + imagefileused + separator + filepath + separator+ iszip + separator + isencrypt + separator + filesize ;rs.executeProc("ImageFile_Insert",para);//文件FILEID处理DocManagerNoRequest docManagerNoRequest = new DocManagerNoRequest();int maincategory = Util.getIntValue((String)staticobj.getObject("DocChangeSetting.maincategory"), 0);int subcategory = Util.getIntValue((String)staticobj.getObject("DocChangeSetting.subcategory"), 0);int seccategory = Util.getIntValue((String)staticobj.getObject("DocChangeSetting.seccategory"), 0);if(modeid > 0){rs.executeSql("select * from modeinfo where id="+modeid);if(rs.next()){maincategory = Util.getIntValue(rs.getString("maincategory"),0);subcategory = Util.getIntValue(rs.getString("subcategory"),0);seccategory = Util.getIntValue(rs.getString("seccategory"),0);}}//填补文档信息String extname = "";//扩展名String imageFileName = Util.null2String(filename);int tempPos = stIndexOf(".");if (tempPos != -1) {extname = imageFileName.substring(tempPos + 1);}Map dataMap=new HashMap();String docsubject="";if(tempPos==-1) docsubject = originalfilename;else docsubject = originalfilename.substring(0, tempPos);dataMap.put("docsubject",docsubject);dataMap.put("doccreaterid",""+userid);dataMap.put("docCreaterType","1");dataMap.put("maincategory",""+maincategory);dataMap.put("subcategory",""+subcategory);dataMap.put("seccategory",""+seccategory);dataMap.put("fileids",""+imageid);docManagerNoRequest.UploadDocNoRequest(dataMap);retDocid = docManagerNoRequest.getId();//文档IDrs.executeSql("update docdetail setownerid="+userid+",doccreatedate='"+getCurrentDate()+"',doccreatetime='"+getCurrentTime()+"' where id="+retDocid);rs.executeSql("update docdetail set docPublishType='2' where id ="+retDocid);//处理文档共享rs.executeSql("INSERT INTOShareinnerdoc(sourceid,type,content,seclevel,sharelevel,srcfrom,opuser,sharesource)values('"+docManagerNoRequest.getId()+"','1','"+userid+"','10','3','80','"+userid+"','0')");}catch(Exception e) {writeLog(e);} finally {try {if (os != null) os.close();if(filezipOut!=null) filezipOut.close();}catch(Exception e) {writeLog(e);}return retDocid;}}3.甘特图插件<%@page language="java"contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@include file="./init_wev8.jsp"%><!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type"content="text/html; charset=UTF-8"><title>甘特图</title><link rel="stylesheet"type="text/css"href="./core/jquery-ui.css"/><link rel="stylesheet"type="text/css"href="./reset.css"/><link rel="stylesheet"type="text/css"href="./core/jquery-gantt.css"/><script language="javascript"src="/js/datetime_wev8.js"></script><script language="javascript"src="/js/JSDateTime/WdatePicker_wev8.js"></script><script language="javascript"src="/js/ecology8/selectbox/js/jquery.selectbox-0.2_wev8.js"></script> <style type="text/css">body {font-family: tahoma, verdana, helvetica;font-size: 0.8em;padding: 10px;width: 90%;height: 95%;}</style></head><body><div style="padding-bottom:5px;width:400px;">开始日期:<input name="start"id="start"value=""type="hidden"class="wuiDate"_callback="calldate"/>&nbsp;&nbsp;结束日期:<input name="end"id="end"value=""type="hidden"class="wuiDate" _callback="calldate"/>&nbsp;&nbsp;<input type="button"class="middle e8_btn_top_first"onclick="query()"value="查询"/> </div><div id="ganttChart"></div><br/><br/><div id="eventMessage"></div><script type="text/javascript"src="./core/jquery-1.4.2.js"></script><script type="text/javascript"src="./core/date.js"></script><script type="text/javascript"src="./core/jquery-ui.js"></script><script type="text/javascript"src="./core/jquery-gantt.js"charset="utf-8"></script><script type="text/javascript"src="./data.js"></script><script type="text/javascript">$(function () {//发送ajax 请求数据$.ajax({url:"/formmode/apps/gantt/data.jsp",data:{action:"init"},dataType:"json",success:function(result){for(var i=0;i<result.length ;i++){// 将日期格式转换为毫秒的形式:如“yyyy-MM-dd --> 1221456783545var s = result[i].series[1].start.split("-");var s1 = result[i].series[1].end.split("-")var start = new Date(s[0],s[1]-1,s[2]);var end = new Date(s1[0],s1[1]-1,s1[2]);result[i].series[1].start = start;result[i].series[1].end = end;}//console.log(result[0].series[1].start.getDate());if(result.length>0){init(result);}}})});function init(ganttData){$("#ganttChart").ganttView({data: ganttData,slideWidth: $(document).width()-400,//右边面板大小behavior: {draggable:false,//禁止拖动// 点击进度条触发事件onClick: function (data) {var msg = "You clicked on an event: { start: " +data.start.toString("M/d/yyyy") + ", end: " + data.end.toString("M/d/yyyy") + " }";$("#eventMessage").text(msg);window.open("/formmode/view/AddFormMode.jsp?modeId=11&formId=-30&type=0&billid="+data.i d);},onResize: function (data) {var msg = "You resized an event: { start: " +data.start.toString("M/d/yyyy") + ", end: " + data.end.toString("M/d/yyyy") + " }";$("#eventMessage").text(msg);},onDrag: function (data) {var msg = "You dragged an event: { start: " +data.start.toString("M/d/yyyy") + ", end: " + data.end.toString("M/d/yyyy") + " }";$("#eventMessage").text(msg);}}});}function query(){//获取到开始日期和结束日期var start = jQuery("#start").val();var end = jQuery("#end").val();if(start=='' && end=='') return;$.ajax({url:"/formmode/apps/gantt/data.jsp",data:{action:"query",start:start,end:end},dataType:"json",success:function(result){jQuery("#ganttChart").empty();for(var i=0;i<result.length ;i++){var s = result[i].series[1].start.split("-");var s1 = result[i].series[1].end.split("-")var start = new Date(s[0],s[1]-1,s[2]);var end = new Date(s1[0],s1[1]-1,s1[2]);result[i].series[1].start = start;result[i].series[1].end = end;}if(result.length>0){init(result);}}})}function calldate(){ }function stringToDate(dateStr,separator){if(!separator){separator="-";}var dateArr = dateStr.split(separator);var year = parseInt(dateArr[0]);var month;//处理月份为04这样的情况if(dateArr[1].indexOf("0") == 0){month = parseInt(dateArr[1].substring(1));}else{month = parseInt(dateArr[1]);}var day = parseInt(dateArr[2]);var date = new Date(year,month -1,day);return date;}</script></body></html>4.组织架构图插件<html><head><meta http-equiv="Content-Type"content="text/html; charset=UTF-8"> <title>组织结构图</title><link rel="stylesheet"href="css/bootstrap.min.css"/><link rel="stylesheet"href="css/jquery.jOrgChart.css"/><link rel="stylesheet"href="css/custom.css"/><link href="css/prettify.css"type="text/css"rel="stylesheet"/><script type="text/javascript"src="prettify.js"></script><script type="text/javascript"src="/formmode/apps/orgchart/css/jquery.min.js"></script> <script type="text/javascript"src="/formmode/apps/orgchart/css/jquery-ui.min.js"></script> <script src="jquery.jOrgChart.js"></script><style>a {text-decoration: none;color: #fff;font-size: 12px;}a:hover {color: red;text-decoration: none;}.jOrgChart.node {width: 120px;height: 50px;line-height: 50px;border-radius: 4px;margin: 0 8px;cursor: pointer;}</style></head><body onload="prettyPrint();"><div id='jOrgChart'style="width: 1900px;height:1000px;overflow-x: auto;margin:0 auto"></div> <script type='text/javascript'>$(function(){//数据返回$.ajax({url: "./data.jsp",//url: "test.json",type: 'GET',dataType: 'JSON',data: {action: 'org_select'},success: function(result){var showlist = $("<ul id='org' style='display:none'></ul>");showall(result.data, showlist);$("#jOrgChart").append(showlist);$("#org").jOrgChart( {chartElement : '#jOrgChart',//指定在某个dom生成jorgchartdragAndDrop : false //设置是否可拖动});}});});function showall(menu_list, parent) {$.each(menu_list, function(index, val) {if(val.childrens.length > 0){var li = $("<li></li>");li.append("<a href='javascript:void(0)'onclick=getOrgId("+val.id+");>"++"</a>").append("<ul></ul>").appendTo(parent);//递归显示showall(val.childrens, $(li).children().eq(1));}else{$("<li></li>").append("<a href='javascript:void(0)'onclick=getOrgId("+val.id+");>"++"</a>").appendTo(parent);}});}</script></body></html>。

泛微OA-ecology-二次开发实例-开发完整说明.doc

泛微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 中主要封装了两个方法:写日志文件,获取配置文件中的参数值。

泛微 ecology 二次开发培训文档

泛微 ecology  二次开发培训文档

二次开发培训文档一、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表示英文显示名称,languageid=9表示繁体显示名称.3、JA V A程序的基本组成在ECOLOGY中开发JA V A程序建议继承weaver.general. BaseBean,在BaseBean 中主要封装了两个方法:写日志文件,获取配置文件中的参数值。

写日志的方法:writeLog(Object obj) 日志会输出到weaver/ecology/log/ecology 中获取配置文件数据:getPropValue(String fname , String key)比如获取weaver.properties中的DriverClasses的值,代码如下:getPropValue(“weaver”,” DriverClasses”)三、如何添加多语言版本的标签四、页面权限控制的说明这一部分将讲解怎样在页面中引用权限,怎么样新增一个权限,如何在新开发的模块上引入权限控制,1、引用系统中的权限首先从系统的权限设置中找到需要引用的权限名称,如下图找到“表单维护”这个权限,其ID为591,然后通过“select rightdetail from systemrightdetailwhere rightid=591”得到其rightdetail=“FormManage:All”,那么在JSP页面中通过如下语句,就可以使得有“表单维护”这个权限的用户可以查看该页面2、如何新增新的权限如何在新建的功能模块上添加新的权限(JSP页面添加权限控制)第一步:通过类似的sql先添加一个需要的权限在数据库中执行完上面的sql后,在系统权限管理中就可以看到添加的该权限了!注意:以上SQL语句中的id请用负数或者统一使用1000000以上的值(这样可以避免和我们升级可能给出的权限重复),并保证不重复,同时保证SystemRightDetail的字段rightdetail也不能重复,上面插入SystemRightDetail表数据的sql,其中42717目前没有实际意义,但也请不要重复,可以使用一个非常大的数据,比如500000。

Ecology6.0二次开发-树形图

Ecology6.0二次开发-树形图

Ecology二次开发树形图开发简介以上是Ecology产品中最典型的框架图之一,其中框架的左侧为一个树形导航栏,框架的右边为内容区。

以上框架一共由4个JSP组成,下面的表格分别对这四个JSP做了简要说明。

开发示例下图是个这个开发示例的效果图,下面的开发示例代码都是为了个效果而准备的!注:开发示例做完后,请访问“main.jsp”页面。

注:在Ecology服务器端的文件夹中,添加了一个treeframe-cst的文件夹,以下所提到的jsp都是存在此文件夹中。

main.jsp<%@ page language="java" contentType="text/html; charset=GBK" %><%@ page import="weaver.general.Util" %><%@ include file="/systeminfo/init.jsp" %><HTML><HEAD><LINK href="/css/Weaver.css" type=text/css rel=STYLESHEET></HEAD><body><TABLE class=viewform width=100% id=oTable1 height=100%><COLGROUP><COL width="50%"><COL width=5><COL width="50%"><TBODY><tr><td height=100% id=oTd1 name=oTd1 width=30%><IFRAME name=leftframe id=leftframe src="left.jsp " width="100%" height="100%" frameborder=no scrolling=no> 浏览器不支持嵌入式框架,或被配置为不显示嵌入式框架。

OA系统二次开发实践与经验分享

OA系统二次开发实践与经验分享

OA系统二次开发实践与经验分享一、引言随着互联网技术的快速发展和工作效率的追求,越来越多的企业开始采用OA系统(办公自动化系统)进行日常管理与协同办公。

然而,随着企业的壮大,原有的OA系统已难以满足企业的需求。

因此,需要对OA系统进行二次开发,以适应企业发展的需要。

本文将从实践的角度出发,分享OA系统二次开发的经验与心得,以便更好地满足企业的需求。

二、OA系统二次开发的背景与必要性随着企业的不断发展,原有的OA系统难以满足企业的需求,因此二次开发变得必要。

OA系统的二次开发能够帮助企业实现定制化开发,扩展业务流程,提高工作效率。

三、OA系统二次开发的实践经验1.需求分析首先,必须对企业的实际需求进行深入的分析。

根据企业的需求,确定二次开发的具体内容。

在这个过程中,需要与企业的各个部门进行沟通,了解各个部门的实际需求。

同时,也需要考虑企业的未来发展方向,以避免二次开发后无法满足企业的发展需求。

2.技术选型根据需求分析的结果,选择最适合的技术进行开发。

选择适合的技术能够在开发过程中减少问题和错误,并可以提高开发效率。

同时,要考虑技术的成本与稳定性,确保二次开发的稳定性。

3.实现过程在实现过程中,需要注意代码的规范性与可读性。

在代码编写过程中,需要编写清晰的注释,遵循一定的命名规范,以便于其他开发人员进行维护与升级。

此外,需要注意代码的可扩展性,以便于后期的升级与拓展。

4.测试与部署在完成开发后,需要进行充分的测试与调试,确保所开发的系统与企业需求的一致。

同时,也需要根据部分区分不同的人群和权限设计相关的安全保护措施。

在完成测试后,进行系统部署,确保企业的正常运营。

四、OA系统二次开发的未来发展随着企业的不断发展,OA系统二次开发也将不断发展。

未来,OA系统的二次开发将更加注重企业的需求,更加注重技术的创新与应用,以更好满足企业的需求。

未来的OA系统二次开发将更加注重前端技术的应用,将更多地采用一些新兴的技术,例如React、Vue等技术。

泛微OAecology二次开发实例开发完整说明

泛微OAecology二次开发实例开发完整说明

泛微OAecology二次开发实例开发完整说明二次开发培训文档一、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页面中将通过<%=(413,())%>这样的形式来表示,其中的数字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、JA V A程序的基本组成在ECOLOGY中开发JA V A程序建议继承. BaseBean,在BaseBean中主要封装了两个方法:写日志文件,获取配置文件中的参数值。

OA系统二次开发平台

OA系统二次开发平台

工作流组成
在搭建第一个工作流之前让我们先来了解一下工作流的组成,字段组成了表单,表单、路径、操 作者组成了流程的基本要素,再辅以其它的功能丰富流程的表现形式。
入门流程
需求分析:
搭建流程的步骤中先考虑好以下几点: 流程逻辑是否可以实现(Ecology能实现事务性流程,而非业务性流程 组织结构如何,汇报对象是否清晰 流程需要用到哪些字段,类型分别是什么 工作流需要如何审批流程,流程过程是否存在特殊情况
12、最后我们来编辑流程图,流程图是为了用户在前台提交流程的时候能够更加清晰显示流 程流转情况。编辑流程图的时候可以看到有些线条显示叠加到一起了,我们要做的就是 整理一下节点和这些线条,正好之后如图1-25所示。
13、我们通过鼠标不断调整流程图,使之更为简洁美观,调整完毕保存。
最后我们来编辑流程图,流程图是为了用户在前台提交流程 的时候能够更加清晰显示流程流转情况。编辑流程图的时候可 以看到有些线条显示叠加到一起了,我们要做的就是整理一下 节点和这些线条,正好之后如图3-22所示。
OA系统二次开发平台
1工作流组成 4 入门流程
5 工作流程搭建步骤
❖ 办公自动化(OA)是面向组织的日常运作和管理,员工及管理者使用频率最高的应用系统, 自1985年国 内召开第一次办公自动化规划会议以来,OA在应用内容的深度与广度、IT技术 运用等方面都有了新的变化和发展,并成为组织不可缺的核心应用系统。
流程设置: 1、点击“节点表单字段”进行表单设置。
2、点击“新建”,将会自动生成一个模版。
3、代码编辑界面,选择“节点字段属性批量设置”添加字段。
4、为了方便编辑代码,给字段进行排序,根据表单设置每行显示字段数,并把三个check 框都勾上。

泛微协同商务系统(Ecology)_系统底层包开发指南

泛微协同商务系统(Ecology)_系统底层包开发指南

泛微协同商务系统(Ecology) 底层包开发指南目录1.引言 (3)1.1概述 (3)1.2定义................................................................................ 错误!未定义书签。

2.底层包应用及范例 (3)2.1最基本的继承类 (3)2.2怎样记录日志 (3)2.3怎样获取属性文件的值 (6)2.4怎样获取系统的运行目录 (7)2.5怎样访问和运行数据库脚本 (8)2.6如何上传一个文件 (11)2.7如何访问已经上传的文件 (15)2.8如何使用缓存提高系统效率 (15)2.9其它底层类基本方法 (26)1. 引言1.1 概述本文档为泛微协同商务系统(Ecology)程序员开发指导文档,讲述了开发底层工具包的应用,常用功能的开发。

2. 底层包应用及范例本章对ecology系统的底层工具包进行讲解,开发人员可以从这里学到怎样利用底层的工具包进行开发2.1 最基本的继承类系统中每一个java bean 都需要继承weaver.general.BaseBean 类。

这个类实现了记录日志和获取属性文件值的方法。

继承这两个类的其它类可直接应用这些方法来记录日志,获取属性文件某一个属性的值。

方法的实现见后面的例子。

继承的例子如下:java bean 的继承public class ResourceComInfo extends BaseBean {public void doSomething() { //某一个方法方法的处理………writeLog(s) ;// 写日志}}2.2 怎样记录日志继承了weaver.general.BaseBean ,可以直接使用writeLog方法记录日志信息。

注意这里是使用,而不是调用,因为这个方法是这两个被继承类中的方法。

注意writeLog 方法的使用:/*** 将某个对象写入Log文件* @param obj 被写入的对象*/public void writeLog(Object obj)我们看到,可以被记入日志的是任意一个java对象。

泛微ecology开发实例

泛微ecology开发实例

泛微ecology开发实例
泛微ecology的开发实例能够帮助你更好地了解泛微ecology的功能和使用方法。

下面是一个简单的开发实例:
系统框架结构:
- ecology Classbean:存放编译后的CLASS文件。

- js:系统中使用的JAVASCRIPT和VBSCRIPT脚本。

- css:系统中JSP页面使用的样式。

- images:系统中使用的图片的存放目录。

- crm Workflow:该功能分文件夹存放每个功能的文件。

- WEB-INF Prop:系统配置文件存放。

通过上述开发实例,你可以了解到泛微ecology的基本程序结构和文件目录。

在实际的开发过程中,你可以根据具体的需求和情况,对泛微ecology进行进一步的开发和扩展。

如果你需要了解更多关于泛微ecology开发的信息,可以继续向我提问。

泛微ecology7二开权限控制

泛微ecology7二开权限控制

E-COLOGY 7.1 中,如何把二次开发的功能加入到系统权限中,并实现通过系统权限来控制先给大家看看我实现后的图示(有图有真像嘛)。

我自己开发了一个与U8集成查询物料的功能,然后我把这个功能加入到系统的权限列表里了,如下图1在没有给任何用户授权时,是不允许访问的。

图2是该功能授权界面,图3是用户访问时界面:现在,我把这个权限授给角色---信息中心主任,他就可以查看了。

图4为授权后的界面,图5为其访问时的界面。

好了,言归正传,现在讲讲如何实现吧。

泛微OA(e-cology)系统功能主要由下面几张表控制:1、系统权限表:SystemRights ,该表主要记录权名称和类别,各字段表示如下id: 权限IDrightdesc: 权限名称righttype: 权限分类(如资料类,系统类等)detachable: 暂不清楚2、系统权限明细表:SystemRightDetail ,该表主要记录各种权限的详细信息,如名称,控制代码等,各字段表示如下id: 主键性字段,无意义rightdetailname: 权限名称rightdetail: 权限控制代码(在网页中即通过识别此段代码来控制权限有无)rightid: 权限ID,与系统权限表中的ID一致3、系统权限组表:SystemRightGroups,该表主要记录各权分的分组情况4、系统权限语言表:SystemRightsLanguage ,该表记录的内容主要为显示语方,各字段表示如下id: 权限IDlanguageid: 语言标识码(7为中文简体,8为英文,9为中文繁体)rightname: 权限名称rightdesc: 权限显示名称一、要实现把二次开发的功能通过系统权限的方式来控制,首先即要在系统权限表(SystemRights)和系统权限明细表(SystemRightDetail)里把相关权限添加进去,本像中二次开发的功能页面-“U8物料查询”(这个页我命名为:ItemBrowserIframe2.jsp),则分别在两个表里插入如下信息在SystemRights 里:insert SystemRights(id,rightdesc,righttype,detachable)values('1600','U8物料查看权限','7','') /* 注:1600为自定义ID,7表示系统类权限在SystemRightDetail 里:insert SystemRightDetail(id,rightdetailname,rightdetail,rightid)values('42800','U8物料查看权限','ItemBrowserIframe2:View','1600') /* 注:这里的ID42800是在原表ID的最大值上加1后插入的,‘ItemBrowserIframe2:View’这段为权限控制代码,1600为权限ID,要与系统权限表里的ID保值一致。

泛微OAecology二次开发实例开发完整说明书

泛微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中主要封装了两个方法:写日志文件,获取配置文件中的参数值。

泛微OA 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中主要封装了两个方法:写日志文件,获取配置文件中的参数值。

泛微协同办公平台Ecology本前端使用手册-流程

泛微协同办公平台Ecology本前端使用手册-流程

仅限阅读请勿传播当您阅读本方案时,即表示您同意不传播泛微协同办公平台E-cology8.0版本前端使用手册(3)--流程WeaverSoftware中国上海耀华支路泛微软件大厦邮政编码:200122传真:版权说明本手册以及相关的计算机软件程序仅用于为泛微协同管理平台最终用户提供信息,上海泛微网络科技股份有限公司有权。

本手册是上海泛微网络科技股份有限公司的专有信息,并受中华人民共和国版权法和国际公约的保护。

未得到上海泛微网络科技股份有限公司明确的书面许可,不得为任何目的、以任何形式或手段辅助或传播本手册的任何部分内容。

本手册内容若有变动,恕不另行通知。

本手册中例子中所引用的公司、人名和数据若非特殊说明,均属虚构。

本手册以及本手册所提及的任何产品的使用均受适应的最终用户许可协议限制。

本手册由上海泛微网络科技股份有限公司制作。

本手册中提及的所有商标、商标名称、服务标志及徽标均归其各自公司所有。

目录一、关于本手册...........................................二、手册结构.............................................三、针对用户.............................................四、更多资源.............................................第1章流程模块前端说明.....................................一、概述.................................................二、说明.................................................第2章待办事宜.............................................一、概述.................................................二、功能说明.............................................三、菜单操作.............................................四、签字意见框...........................................五、流程操作说明.........................................六、签字意见查看.........................................七、转发操作............................................. 第3章新建流程.............................................一、概述.................................................二、功能说明.............................................三、流程处理.............................................四、新建自由流程.........................................3.4.1、概述....................................................3.4.2、添加节点................................................ 第4章已办事宜.............................................一、概述.................................................二、功能说明.............................................三、操作选项说明......................................... 第5章流程督办.............................................一、概述.................................................二、功能说明............................................. 第6章我的请求.............................................一、概述.................................................二、功能说明.............................................三、操作选项说明......................................... 第7章自定义查询...........................................一、概述.................................................二、自定义查询...........................................第8章流程代理.............................................一、概述.................................................二、功能说明.............................................三、新建代理.............................................第9章查询流程.............................................一、概述.................................................二、功能说明.............................................第10章流程监控.............................................一、概述.................................................二、功能说明.............................................三、监控操作说明:.......................................第11章流程存为文档.........................................一、概述.................................................二、功能说明.............................................三、流程存为文档.........................................前言一、关于本手册本手册是泛微协同管理平台E-cology8.0基础版本的系统维护手册,主要为了指导用户管理员使用本产品而编写。

泛微协同商务系统(Ecology)_系统底层包开发指南

泛微协同商务系统(Ecology)_系统底层包开发指南

泛微协同商务系统(Ecology) 底层包开发指南目录1.引言 (3)1.1概述 (3)1.2定义................................................................................ 错误!未定义书签。

2.底层包应用及范例 (3)2.1最基本的继承类 (3)2.2怎样记录日志 (3)2.3怎样获取属性文件的值 (6)2.4怎样获取系统的运行目录 (7)2.5怎样访问和运行数据库脚本 (8)2.6如何上传一个文件 (11)2.7如何访问已经上传的文件 (15)2.8如何使用缓存提高系统效率 (15)2.9其它底层类基本方法 (26)1. 引言1.1 概述本文档为泛微协同商务系统(Ecology)程序员开发指导文档,讲述了开发底层工具包的应用,常用功能的开发。

2. 底层包应用及范例本章对ecology系统的底层工具包进行讲解,开发人员可以从这里学到怎样利用底层的工具包进行开发2.1 最基本的继承类系统中每一个java bean 都需要继承weaver.general.BaseBean 类。

这个类实现了记录日志和获取属性文件值的方法。

继承这两个类的其它类可直接应用这些方法来记录日志,获取属性文件某一个属性的值。

方法的实现见后面的例子。

继承的例子如下:java bean 的继承public class ResourceComInfo extends BaseBean {public void doSomething() { //某一个方法方法的处理………writeLog(s) ;// 写日志}}2.2 怎样记录日志继承了weaver.general.BaseBean ,可以直接使用writeLog方法记录日志信息。

注意这里是使用,而不是调用,因为这个方法是这两个被继承类中的方法。

注意writeLog 方法的使用:/*** 将某个对象写入Log文件* @param obj 被写入的对象*/public void writeLog(Object obj)我们看到,可以被记入日志的是任意一个java对象。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

二次开发培训文档
一、ECOLOGY系统框架结构
1、主要的程序结构
Ecology
Classbean 存放编译后的CLASS文件
js 系统中使用的JAVASCRIPT和VBSCRIPT脚本
Css 系统中JSP页面使用的样式
Images
Images_face
Images_frame 系统中使用的图片的存放目录
Crm
Workflow 该功能分文件夹存放每个功能的文件
WEB-INF
Prop 系统配置文件存放
Service 系统的接口配置文件的存放
二、说明一个JSP页面,一个JAVA程序的基本组成,如何阅读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=81249
delete from HtmlLabelInfo where indexid=81249
INSERT 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 中主要封装了两个方法:写日志文件,获取配置文件中的参数值。

public String getPropValue(String fname , String key)
public void writeLog(Object obj)。

相关文档
最新文档