|
|
|
名易OA软件二次开发总结(史上最全的)
|
名易oa平台经验总结首先,对名易软件节点后附加操作二次开发的实践:一、把ChurukuAction.class文件放入名易classbean名易OA系统interfacesworkflowaction文件夹下面。二、在名易OA系统WEB-INFservice下,有一个action.xml文件,打开编辑,在module前面加上这段话:service-pointid=ChurukuActioninterface=名易OA系统.interfaces.workflow.action.Actioninvoke-factoryconstructclass=名易OA系统.interfaces.workflow.action.ChurukuActioninvoke-factoryervice-point保存后关闭。三、在名易oa系统流程设置的节点后附加操作上加上我们自己的这个action(ChurukuAction)writeLog(debuginfois+debugInfo);记录日志,写入日志文件。根据一些流程知识,可以知道:License表中存放了公司一些详细信息。通过systeminfolabelManageLabel.jsp页面可以管理标签。时刻牢记用标签,来寻找页面(不同标签,可能显示同一个文字)。根据标签,查找页面每个jsp页面几乎都include了init.jsp页面,搭建基本jsp框架根据页面可以知道,数据库操作,基本用RecodeSet就可以。jsp:useBeanid=RecordSetclass=名易OA系统.conn.RecordSetscope=page%StringcompanyName=;Stringcversion=;RecordSet.executeSql(selectcompanyname,cversionfromlicense);if(RecordSet.next()){companyName=RecordSet.getString(companyname);cversion=RecordSet.getString(cversion);}%运用recodeset可以方便操作数据库。----修改部门为总部因客户经常要求角色选择时候,默认为总部,要不然每次都要选择,会忘记,现修改页面,让其默认角色为总部,方便操作!首先,我们可以根据地址,找到流程设置页面addwf.jsp,根据一些请求,找到设置默认角色的页面,editoperatorgroup.jsp,在第302行,option上,加上select让其默认选择。(140标签为总部,根据140查找)。----获取属性文件的值:继承baseBean的类,直接可以通过publicStringgetPropValue(Stringfname,Stringkey)获取相应key的值。(属性文件放在WEB-INFprop目录)----名易OA系统.general.GCONST类提供了一个静态方法getRootPath(),可以直接返回系统的运行目录。----测试上传文件到服务器,访问已经上传的文件,导入导出excel文件。使用缓存机制暂时不考虑。名易OA系统.general.Util:提供了大量基本的工具方法(其中提供了对字符,数据等的处理),其中null2String方法,fromScreen方法,toScreen方法,TokenizerString,toHtml方法是大家需要关注的方法。名易OA系统.general.TimeUtil:提供对日期操作的工具方法,如:日期转化,日期加减名易OA系统.general.SendMail:提供了邮件发送的基本方法,其中send方法,sendhtml方法,sendMiltipartText方法是大家需要关注的方法。名易OA系统.sms.SMSManager提供了发送短信的基本方法,其中sendDBSMS方法,发送短信后会在OA的数据库中存放一条发送记录,sendSMS只发送短信,不记录信息名易OA系统.file.FileManage:提供了文件处理的工具方法。其中createDir方法,copy方法,moveFileTo方法,DeleteFile方法,extractFileName方法,extractFileExt方法,extractFilePath方法是大家需要关注的方法。712将项目部署到本地:copyoracle的dmp文件,建立一个用户,赋给它dba权限,建立一个表空间,然后将dmp(表空间)赋给我们新建的用户。(具体语句另外附带)数据库更改设置,oracle的netManager还得配置本地(可能不需要)对页面加上系统已有权限:首先从系统的权限设置中找到需要引用的权限名称,如下如找到地址类型维护这个权限,其ID为41,然后通过selectrightdetailfromsystemrightdetailwhererightid=41得到其rightdetail=AddAddressType:Add,那么在JSP页面中通过如下语句,就可以使得只有的地址类型维护这个权限用的用户可以查看该页面:%if(!HrmUserVarify.checkUserRight(AddAddressType:Add,user)){response.sendRedirect(noticenoright.jsp);return;}%若要新增权限功能,则须新插入权限表:文档数据结构:docdetail:文档信息存储,docdetailcontent:文档内容(sqlserver不用该表)docimagefile:文档附件关联关系docshare:文档共享表sharinnerdoc:文档共享明细表名易协同OA流程数据结构:Workflow_formbase:工作流表单信息表,标注表单名字和所在分部Workflow_requestbase:流程的基本信息Workflow_form:流程的具体信息通过REQUESTID字段和Workflow_requestbase表关联Workflow_formdetail:流程的明细信息,通过REQUESTID字段和Workflow_requestbase表关联Workflow_currentoperator:流程当前未操作者,已操作者等信息workflow_requestlog流程处理人处理过的审批意见workflow_requestviewlog流程的查看日志名易协同OA软禁单点继承登陆设置:查看二次开发文档单点登录;数据源和计划任务接口:--安装名易OA系统,跳过license方法,找到名易OA系统login下的VerifyLogin.java文件,将return19的所有if都改为false,即不让程序进入19。自定义浏览框!(实际与说明书上不同,需要在设置中心中设置,自定义浏览按钮)713名易OA办公协同对工作流的解读:(通过httpwatch查看) 先根据workflowid查找到对应workflow_base流程,…过程复杂。。- 通过一系列过程,找到流程体页面:WorkflowAddRequestBodyAction.jsp(在标题上加了123,待改这样将会影响到每个页面);明细表页面:WorkflowAddRequestDetailBody.jsp
3、BacoError.gif是!图标。 根据HttpWatch显示,人员浏览框页面为select.jsp,hrmResource即人员表中,loginid表示该人员是否可登陆系统,若为null,则无法登陆,managerid表示上级人员,要更改人员浏览页上的显示信息,只需更改Select.jsp即可。如要在选择人员时显示全部人员,只需将loginidisnotnull去掉即可。- 页面登陆从Login.jsp开始,到VerifyLogin.jsp再进入main.jsp页面。中间会通过Homepageredirect.jsp跳转。
6、对ResourceBrowser.jsp页面进行修改。select*from名易OA系统.dbo.workflow_AgentselectisFormSignature,formSignatureWidth,formSignatureHeightfrom名易OA系统.dbo.workflow_flownodewhereworkflowId=28;select*from名易OA系统.dbo.workflow_flownodewhereworkflowId=28select*from名易OA系统.dbo.HrmResourceselectlastname,departmentid,jobtitlefrom名易OA系统.dbo.HrmResource;select*from名易OA系统.dbo.HrmJobTitles;select*from名易OA系统.dbo.HrmDepartment;714(医惠科技处)人员选择的浏览按钮:spanid=viewerspanahref=javaScript:openhrm(%=viewer%);onclick='pointerXY(event);'%=Util.toScreen(viewername,user.getLanguage())%apaninputtype=hiddenname=viewervalue=%=viewer%td名易oa智能资产商品选择浏览按钮:待解!报表问题,安装finereport之后,自行研究报表生成使用。使用按照自带api文档进行,步骤如下:首先,进行数据库定义,连接数据库,拉出相应的表,对表中数据进行生成报表其次,对生成的报表进行部署,部署出现错误,500错误,和一个数据库错误。待解!已解:500错误是因为缺少jar包,将finereport安装目录下的lib下的jar包都移过去,问题就解决。数据库问题是数据库连接错误,未找到合适的数据库连接,finereport好像不会内置数据库配置,需要手工配置resource文件夹下面的datasource.xml文件。715浮点数2位更改为3位:根据httpwatch查看,跟踪到form_operation.jsp页面,(1)将里面的所有number(15,2)更改为保存3位小数。(2)或者直接更改数据库:(可视化操作sqlserver不行)altertable[名易OA系统].[dbo].[formtable_main_2]altercolumnf1decimal(15,3);流程基本信息管理代码文件:WFManager.java文件,5.0与6.0在流程字段上不一样。对页面右键的更改:相应的右键上,加上了日志记录的管理:RCMenu+={+SystemEnv.getHtmlLabelName(83,user.getLanguage())+,ysteminfoSysMaintenanceLog.jsp?sqlwhere=whereoperateitem=+16+,_self};RCMenuHeight+=RCMenuHeightStep;此处sqlwhere条件目前是角色管理的日志管理,不是对应的权限设置的管理!718工作流程模块:自定义查询需要系统管理员定义过,而且需要自己走过流程才能看到相应界面。流程存为文档:1、自动:(流程存为文档存放路径,所有者,然后在节点后附加操作上增加相应接口(自带的))2、手动(流程存为文档存放路径,所有者,然后在流程存为模板模块打钩存为文档。)对报表设置的参数查询:定义参数,高级设置:流程创建文档,主要用于收发文流程,数据出口(子流程):重新生成文档的话:如果打钩,则原来的文档会重新拷贝一份,这样每个人都会单独的文档,字段拆分:是要促发给n个人,根据某一个字段,拆分成n个流程发。流程转计划任务:就算出差,也是有任务的,跟子流程设置类似,签章套红71911浙商银行权限组日志bug修改:首先,更改【设置中心】-【权限设置】-权限组页面,右键无【日志】选项,并且单个权限组点进去,显示的是所有的日志情况,不符,应该改成和【角色设置】一样。修改:打开SystemRightGroup.jsp页面,在对应页面放置右键处地方,加上‘日志’功能:RCMenu+={+SystemEnv.getHtmlLabelName(83,user.getLanguage())+,ysteminfoSysMaintenanceLog.jsp?sqlwhere=whereoperateitem=+28+,_self};RCMenuHeight+=RCMenuHeightStep;在对应单个权限组中,修改,只显示对应日志,而不是全部:if(HrmUserVarify.checkUserRight(SystemRightGroup:Log,user)){if(rs.getDBType().equals(db2)){RCMenu+={+SystemEnv.getHtmlLabelName(83,user.getLanguage())+,ysteminfoSysMaintenanceLog.jsp?sqlwhere=whereint(operateitem)=28andrelatedid=+id+,_self};andrelatedid=+id+writebyme7.18}else{RCMenu+={+SystemEnv.getHtmlLabelName(83,user.getLanguage())+,ysteminfoSysMaintenanceLog.jsp?sqlwhere=whereoperateitem=28andrelatedid=+id+,_self};andrelatedid=+id+writebyme7.18}名易办公系统OA流程模块知识研读:在新建流程的时候,转到RequestType.jsp页面,点击对应流程,到达AddRequest.jsp页面,传递的参数为workflowid,和isagent(是否代理);通过workflowid找到我们对应的流程(此处,以我新建的表单与路径作为测试依据),查数据库可以发现,每一个节点,对应一条数据库信息。若有传messageType,则表示需要短信提醒;流程表单填写内容页面为WorkflowAddRequestBodyAction.jsp,对部门的浏览::8080hrmcompanyDepartmentBrowser.jsp72011在DepartmentBrowser.jsp中,DepartmentSingleXML.jsp用于解析xml(事先定义)。客户浏览::8080CRMdataCustomerBrowser.jsp依次类推,以下页面就不再修改显示。项目浏览:文档浏览:资产浏览:多人力资源浏览;浏览按钮基本都是*Browser.jsp,ctrl+shift+R可以快速找到对应的页面。72111名易企业Finereport报表设计:右键形态,可以解决实际值与显示值不一样的效果,同时,通过这个,可以在条件属性上,控制分页设置。绘制的图表要预览后才能正确显示,编辑处无法显示出来。部署名易OA系统6源码,将class文件反编译成java文件,修改错误,myeclipse跑起系统。Myeclipse查看快捷键方式:ctrl+shift+L可以查看myeclipse所有操作的快捷键,以下是几个常用:Ctrl+shift+RT查找相关文件(匹配文件名)Ctrl+alt+GfindtextinworkspaceCtrl+H全文搜索Ctrl+Q上次编辑的地方页面是否有权限查看,通过HrmUserVarify.checkUserRight(CptCapital:Display,user)方式进行判断用户是否有权限。没有,则返回response.sendRedirect(noticenoright.jsp);名易协同办公OA人力资源:User.java文件代表人力信息,loginType登录类型1:内部用户,2:外部用户,后台通过setLoginid(Stringkey)设置登陆账号信息。存于HrmResource表信息中。若是外部用户,通过CRM_CustomerInfo表信息查找。一些生日提醒,密码修改提醒,个人信息修改等功能在名易OA系统.hrm.settings文件夹下设置。Track类跟踪了流程的一系列信息。72211Workflow_requestbase:在新建流程时候创建一条记录,批准,提交后,只是改变status,lastoperator,lastnodeid,currentnodeid。在sqlserver里示范记录:*字段管理*select*from名易OA系统_5.dbo.workflow_formdictwherefieldname='yyy';*工作字段字典表,字段管理主字段对应的表*select*from名易OA系统_5.dbo.workflow_formdictdetail;*工作字段字典表,字段管理的明细字段对应的表**表单管理*select*fromworkflow_billorderbyidasc;select*fromHtmlLabelIndexorderbyiddesc;select*fromworkflow_billfieldwherebillid=-8;select*fromHtmlLabelInfo;select*from名易OA系统_5.dbo.workflow_formdetail;*表单明细表,(字段管理上新建的明细字段会管理在此表上),表单管理没用到*select*from名易OA系统_5.dbo.workflow_formbaseorderbyiddesc;*系统默认表单吧,没有用到*select*from名易OA系统_5.dbo.Workflow_billdetailtable;*单据明细表*select*fromformtable_main_8;*自定义表单***select*fromworkflow_type;*流程类型*select*from名易OA系统_5.dbo.workflow_baseorderbyiddesc;*路径设置对应的表,当设置节点信息后,与workflow_flownode表进行关联*select*from名易OA系统_5.dbo.workflow_flownodeorderbynodeiddesc;*nodetype即表示四种节点类型:创建,审批,提交,归档*select*fromworkflow_groupdetailorderbyiddesc;*节点操作者组操作者类型信息表*select*fromworkflow_nodegrouporderbynodeiddesc;*工作流节点操作者组信息表*select*fromworkflow_nodeformorderbynodeiddesc;*工作流节点字段表,看当前字段是否可见,可编辑,必须输入*select*fromworkflow_NodeFormGrouporderbynodeiddesc;select*from名易OA系统_5.dbo.workflow_nodelinkorderbyiddesc;*节点出口信息关联表,包含节点id,出口名称,前一节点*select*from名易OA系统_5.dbo.workflow_nodebaseorderbyiddesc;*其id关联workflow_flownode的nodeid字段*select*from名易OA系统_5.dbo.workflow_form;*新建请求的时候,主要看此表单*select*fromworkflow_addinoperate;select*fromworkflow_formdetail;select*from名易OA系统_5.dbo.Workflow_requestbaseorderbyrequestiddesc;*与上一条记录进行比较10,35,1,37,2,财务经理批准,0,1,,5,,,3,2011-7-22,10:03,0,0,0,-1,-1,,,5,0,,0,*select*from名易OA系统_5.dbo.workflow_currentoperatororderbyrequestiddesc;*记录当前请求状态,并查找下一节点的操作者*select*from名易OA系统_5.dbo.workflow_formdetailinfo;*未用到**人力资源*select*from名易OA系统_5.dbo.HrmResource;名易通过走主要流程,说明:新建一个表单:(form_operation.jsp)1、自定义表单都被insert到workflow_bill中(select*fromworkflow_billorderbyidasc;),表名通过HtmlLabelIndex表才能找到,也就是说:自定义表单的表名被插入标签表中,而表单中是通过标签表索引记录。并且id是-的,越来越小。2、自定义表单的详细信息,是formtable_main_(id)来记录。(在插入字段之前,该表只有两个字段,一个id,一个requestid)3、添加字段后,会将相应字段信息存入workflow_billfield表中,字段会在formtable_main_(id)表中体现出来。明细表记录在Workflow_billdetailtable表中。路径设置:1、新建流程类型:对应插入workflow_type2、路径设置,添加一个流程,对应插入workflow_base,记录流程基本信息。3、加入节点信息后,对应插入workflow_flownode表中。Nodeid会一直加上去,nodetype的0表示创建,3表示归档。4、节点操作者添加后,会在workflow_nodegroup中添加记录,并在workflow_groupdetail添加相应的记录。对应页面wf_operation.jsp上修改。两张表通过:groupdetail的groupid对应的nodegroup的id。节点是否可编辑通过对应workflow_nodeform的nodeid查看。5、出口信息:下7.26接暂时待续。。。72211725对资产查询:buttonclass=BrowseronClick=onShowCapitalid()button修改KucunSearch.jsp页面,修改173行!726接22日。6、出口信息:保存出口信息后,workflow_nodelink表相应插入对应记录,7、功能管理:对应workflow_function_manage表,retract字段表示强制收回的情况:0表示不可收回,1:查看前收回,2:查看后收回。8、流程计划表结构文档还未改变。527调整协作区界面:coworkCoworkViewFrame.jsp页面调整比例大小,在CoworkList.jsp页面上更改显示的字段,将显示的时间去掉()。在coworkview.jsp页面中更改文本框高度和一些空格。728问题:FreeFieldOperation.jsp页面上第四行,无法找到class=名易OA系统.cpt.capital.CapitalModifyFieldComInfo文件,无法保存修改信息。;‘(向蒋晋确认代码)今日所做:医惠科技项目清单列表修改:在搜索出的项目列表中,添加自定义项目字段。所做修改页面如下:ListProjectFreeField.jspEditFreeeField.jspFreeFieldOperation.jsp通过字段编辑,项目清单显示即在searchResult.jsp页面上根据sql,col分页表格可以修改,动态添加和删除。对添加项目页面进行修改:addProject.jsp页面,讲左边的相关附件放到右边其他信息上面。ViewProject.jsp页面也是如此。对出入库库存查询的报表进行修改,在数据库服务器中安装了finereport,潜在问题:finereport需要付费,每一个星期,会中断报表服务器一次。对文档的已阅进行开发。7291、根据昨日医惠科技需求,将项目清单顺序修改,searchResult.jsp页面根据col列表分页显示。2、将项目卡片显示页面附件列表顺序修改,ViewProject.jsp页面。3、附件添加js,addannewRow()函数根据table的id来确定。横线通过class=line显示。4、我的知识中,增加已阅文档板块,修改页面docSearchview.jsp页面,在if(isNew.equals(yes)){}…增加else模块。(有两处,第二处修改起作用)
信息发布:广州名易软件有限公司 http://www.myidp.net
|
|
|
|
|