peoplesoft笔记_第1页
peoplesoft笔记_第2页
peoplesoft笔记_第3页
peoplesoft笔记_第4页
peoplesoft笔记_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、PeopleSoft 的优质整合应用方案包括人力资源管理 HRMS,客户关系管理 CRM,财务管理,企业绩效管理及入口网络解决方案.HCM主要分coreHR,Global Payroll,Eperformance,Recruitment等HCM在关于组织机构设置方面提供了集合ID,业务单位,公司,地点,部门、部门树功能,一般的组织机构管理的需要应该都能完全满足了。集合ID是主数据表的关键字,通过集合ID可以在各表之间共享数据;业务单位是逻辑上抽象关键字,特定业务信息的逻辑单位,比如说多业态可以按照不同业态设置业务单位,跨地区以不同地区设置业务单位(无按照语言创建的,开个玩笑)。公司:主要是企业

2、内财物核算、合同主体等不同作用的公司。地点:标识公司、部门、岗位属性的信息,也是管理上的统计维度。部门:业务中管理中的部门,在HCM也是授权节点,所以项目中通常部门概念会双向延伸,向上会将公司定义为 部门,向下追溯到最小的管理单元。部门树:部门创建后,各部门之间的关系并为形成,通过部门树可以灵活多样定义部门之间的关系。二部门今天学习PSHCM部门和部门树,这两个看似简单概念在PSHCM系统实施和应用过程中,提供非常大的灵活性,第一、部门和日常管理的部门基本等同(为了 高效管理通常会多创建一些虚拟部门),都是组织中的业务实体。第二,部门之间存在简单或复杂的关系,例如上下级之间的部门或者分管(稳定

3、的)等部门关系。 第三,部门之间的这种关系在系统中可以通过部门树来描述。创建PS部门树前提是业务单位至少有一个部门,他将作为部门树的根节点被保存下来。创建部门树时需要提供的树名称、结构ID、生效日期、使用级别和集合ID,设置树级别和定义根节点等。其中,树名称必须是“DEPT_SECURITY”字样,在写死的代码中已经默认树名称使用此名称;结构ID选择department,系统还提供了其他结构ID,例如POSITION、SUCCESSION等,在项目中很少用;生效日期是HCM时间轴的实现形式,对于每个时段都是通过生效日期表达的,下一件事的生效日期-1默认为此事件技术日期,和SAPHCM时间段不同

4、的实现形式,相比较还是PS比较简便。注意:时间轴的应用,部门树的生效日期必须大于等于部门的生效日期。使用级别一般选择宽松强制,这样允许收纳不同类型的实体。集合ID选择该部门树时针对哪个业务单位建立的树。设置树级别按照管理中不同的的部门级别定义树级别,定义好根节点子部门以次排开。写到这里和大家分享一下项目经验,比如说一家公司的一级部门财务部,财务部下级部门结算部,通常我们把公司定义为零级部门,以次排开后财务部是一级部门, 结算部为二级部门,现在有平衡点需要和客户一起考虑,财务部领导等放在一级部门内,还是建立虚拟二级部门,名为财务部办公室。这两种方案优劣比较如下:指标 放在一级部门 建立虚拟部门真

5、实性 高 低高效性 低 高客户接受度 低 高真实性:如实反映现实业务;高效性:查询、报表简单高效;客户接受度:国内客户多选择后者。实质上这时候再去应用部门树提供的级别就会有误差,因为财务部领导等人属于一级部门的人员。第三篇 部门树应用和权限管理在PSHCM中部门树主要用于数据权限的控制,看到数据权限大家肯定疑问为什么不是权限,而是数据权限呢,这就要谈到PS的安全管理,数据权限是相对于页面权限而言的,接下来花开两朵各表一枝,先看数据权限,再看页面权限。数据权限是基于部门树建立起来的,针对树节点建立包括分支在内的数据安全性,数据权限是方便大家理解的名词,专业名词为行安全性,行安全性控制权限范围内颗

6、粒度从部门往下的所有数据权限,部门往下包括岗位、员工以及员工的相关信息。针对节点的安全性例如图例所示: 在建立数据安全性时,可以针对总经办、财务部、人资部、销售部建立数据权限,人资部数据权限也包含下面的四个部门,同时可以针对人资部内的四个部门建立数 据安全性,那我们可能就有人疑问了,在业务中常有分管VP管理二级部门的任意组合,如人资和总经办副总。他们的权限又如何建立呢?这时我们就要引入许可权 列表(Permission List),将选取的树节点存在许可权列表,许可权列表和节点是一对一或一对多的关系,其中一对多的形式赋权形式可以满足分管VP业务要求。PS页面权限是由角色、许可权列表、菜单组件页

7、面组成,如此多层级的安全体系为了权限管理的灵活性和严谨性,菜单组件页面的关系是相对稳定的,概念从大到 小,许可权列表是由一个一个有效的页面构成,许可权列表构成了角色。角色和许可权列表用户可以在系统按需配置,将不同的角色赋给PS用户,这样就完成了 PS安全管理。下面用一张直观反映页面权限管理体系。第四篇PS用户管理第三篇我们看了数据权限和页面权限,并且引出了PS用户图例,第四篇,围绕该图将PS用户管理讲解完成。用户即为登陆PS系统账号,用户登陆PS系统后,根据自己在实际业务中的角色可以查找和维护不同的页面。用户(User)和员工(Employee)的关系,用户和员工ID关联后,员工可以用户ID登

8、陆系统查看员工自助,并不是所有的员工ID都有用户与之一一对应,取决于管理实际情况,总结:用户可以仅对应用一个员工ID(有些用户没有员工与之关联,系统未做强关联,这样的用户无员工自助),一个员工ID可 以关联不止一个用户,可以给用户与员工不严谨的关系定义,多对一。当对用户有一个直观的认识后再看第三篇中的图例。左上角四个矩形依次是定义工作流、进程 调度器、默认值和数据安全。其中数据权限是控制用户查看授权部门下的所有相关信息(前提具有页面权限,关于数据和页面权限后面给大家分享个例子)。第三篇 中我们提到说页面权限、角色和用户的关系。那么图例列出了三个角色,暂且标识为R1、R2、R3,图中有6类用户,

9、分别:R1;R2;R3;R1R2;R1R3;R2R3;R1R2R3。无论哪种用户登录系统看到的页面都是不同的。另外一张图来展示用户、角色、权限、菜单、组件、页面的关系。菜单、组件和页面之间的关键相对确定,在创建许可权时选择菜单下面的组件。数据和页面权限关系类似于一个商品和仓库;仓管员能看到和管理商品类似于数据权限,而仓管员能开启的仓库类似于页面权限。标准岗位意指何物本欲给标准岗位在网上搜索找一个准确的定义,关于标准岗位没有完全匹配的,换成职务找了一下,果然找到一片关于标准岗位不错的文章,索性直接转载过来。声明标准岗位和职务在一定程度是等同的。下面是转自新浪博客智勇双全、闻道则喜的博文。职务即工

10、作(job),它是指企业员工所从事工作的类别。即代表一类职责的工作类别。职位即岗位(position),是“职务+组织”,即职务落到具体某个组织/部门的岗位。举例理解:“人力资源经理”是职务,而“迪信通北京分公司人力经理”就是职位。职级是职务的级别,是跨职务的一个横向的比较标准。如实施总监和开发总监是2条不同的业务线的职务,但是他们的职级可以是一样的。一般职务是全集团唯一的,集中来维护。但这有个分公司加职务不能及时维护的问题。故Peoplesoft提供了SetID(设置码/设置区域)的设计,即 它能用两个字段来定义一个职务:设置码(setid)和职务(Job code)。这样就能下放权限,让分

11、公司自己维护职务。- 下面这个讨论很值得参考 -职务与职位的区别 对话: 1、刘建华 人力资源总监Hr Dept迪信通集团人力资源中心/迪信通商学院2007年领导了迪信通集团Oracle HR系统在全国范围内的实施 2、何瑞娟 北京爱尔的科技(AIT)有限公司的eHR资深实施顾问 3、程时旭 eHR顾问 4、王秀丽 专业HR【问题探讨】职务与职位的区别刘:这是一个基本概念,请大家说出职务和职位的区别!王:职务即工作(job),它是指企业员工所从事工作的类别。职务是指由一组主要职责相似的职位所组成,它是由实现企业职能的一个个具体活动所构成的相对独立体。 职位即岗位(position),它是指在一

12、个特定的企业组织中、在一个特定的时间内、由一个特定的人所担负的一个或数个任务所组成。简单地讲,职位是指企业的某个员工需要完成的一个或一组任务。 即职务表示的是工作的类别,而职位表示的是工作任务。 工作中两者好像是混用的吧?好像在对于任用人员来说是多用职务,对于组织来说多用职位。比如说张三曾任厂长职务,张三离职后,该公司的厂长职位出现空缺。刘:呵呵,简单的说,人力资源经理就是职务,而迪信通北京分公司人力经理就是职位。 职务是类的集合,职位是具体到某一个点上。组织职务就是职位。插嘴: 职务强调任务职位强调的是位置程:eHR系统目前基于3种模式: 1、人+部门+职务体系。这种情况下,系统里不需要职位

13、(Position),统一系统里定义标准职位即职务,人直接挂在部门下面。 2、人+职位。系统里没有标准职位即职务。系统实施比较简单,不需要梳理职务体系,重大的缺陷就是系统无法对工作信息进行有效的统计,因为系统里没有标准职位的代码参照,你可以要求输入统一的名称,但是名称不具有唯一性,有的人可能会输错。 3、人+职位+职务。这里职务是职位的抽象,即标准岗位,在集团-子公司的架构里,子公司可随意输入具体的职位,只需要将该职位归属到在集团统一定义的标准岗位(职务)即可,在这里职位必须由集团层面统一定义,子公司没有职务定义权。 目前用友的系统NC HR支持2+3。嘉扬系统支持1、2。Oracle、SAP

14、支持1、2、3。铂金、万古只支持1。金蝶k3、用友u8、金益康、宏景、朗新只支持2。程:职务是一套独立的体系。和具体集团下的公司没有关系。 但是职务和组织属性还是有关系的。比如对零售企业来说,大卖场、综超、便利店的采购、理货员职责是不一样的,属于不同的职务。在人力资源系统里,只能这样处理:分别叫做大卖场理货、综超理货、便利店理货,但是这样太复杂了,目前大部分系统也只能这样区分。 做的比较好的是Peoplesoft,它能用两个字段来定义一个职务:设置码(setid)和职务(Job code),这样的话,都叫一个名称比如理货员,使用同一个职务代码,但是通过设置码来区分不同业态的职位。 在Oracl

15、e HR将来的版本里,要采用Peoplesoft这种设计,据说他们已经统一了。 国内还没有公司采用这种设计。何:本人是eHR咨询顾问,我在给客户实施HR系统咨询时,是这么讲的: 组织架构包括:组织单位、职务、职位、任务、工作地点 一个组织单位包括一个或多个职位 一个职位由多个职务来定义 一个职务用多个任务来描述 一个职位在某个工作地点进行 一个职位由某位员工担任 职务:是对企业中工作责任的总分类。企业中每个职务是唯一的。但可由一个或多个员工拥有该职务。 例如:秘书职务,可在企业中建立一个秘书职务。然后定义20位员工拥有该职务。其他如:经理,助理等。程:采购助理,财务助理,行政助理这些都是职务,

16、不是职位或者岗位,职位是“部门+职务”。目前国内有的的系统这方面存在重大的缺陷。 职位:是已经指派给某人的职务,是在企业一层建立的。在建立了职务之后,必须建立必要的职位,职位继承了相应职务中所包含的任务,但它也可有额外、特定的任务。不同的职位可执行一个职务中相同的任务,一个职位可由一个人担任,也可以是空缺的。 例如:对于助理职务,可以定义采购助理,财务助理,行政助理等。刘:支持程老师观点,基本概念的理解非常重要!何:俺深为作为一名EHR咨询顾问而不能将所要表达的意思阐述清楚而汗颜啊,我不认为我对职务职位的理解与建华、程老师及4楼秀丽、13楼刘芳的理解有本质出入。或许我应该写成采购部助理,财务部

17、助理,即是“部门+职务”的职位模式。 我实施过的EHR项目中,已实现楼上所述1+2+3模式,在系统管理模块,分别对组织职群职务职位开发了代码灵活化关联维护功能,即用 两个字段来定义一个职务:设置码(setid)和职务(Job code),这是符合客户需求的,先后得到 LG,LS,LP,MANDO,GS,POSCO,SINOSOFT,SIMONE,LOTTE,PN,Hyundai,O-ZONE Fitness,WooriBank等知名客户的认同。 在此再唠叨两句,希望感兴趣的BAR友进一步沟通。程:何瑞娟顾问: 看来你是北京爱尔的科技(AIT)有限公司的顾问啊,做得不错。 首先说如果是使用“人+

18、职位”的构建方法,这里职务是独立的,职位通过部门+职务来定位。 这种情况下,你说的是职位名称,这个怎么叫都是可以的,你也可以不使用部门名称+职务的叫法,而直接使用职务的叫法,比如秘书,也可以叫人力资源部秘书。我说的是定位,即靠什么确定它的唯一性,职位在这里靠“部门+职务”来定位。 这个可以用一种方式来验证,假如你用你所说的职位名称来建立职位关系,就会出现通过名字无法识别的问题,这种情况下,在设计工作流的时候,非常麻 烦,因为弹出来的窗体里的职位关系图你分不清楚究竟是哪个部门的,除非带部门一起展现。你说的那种情况下,是无法打印职位结构图的,因为生成的很多职位名 称都一样。这时你定义的职位的名称用

19、的是职务的名称,但是ID用的是“部门+职位”的联合主键。 至于使用“人+部门+职务”来构建系统,这里就没有职位的问题了。你可能大部分情况时使用这种方式构建的系统,铂金系统甚至只支持这种方式。这种方 式构建的系统很漂亮,但是有个问题,当客户规模很大的时候,职务无法及时定义的时候,系统的维护很成问题。因为这个时候的职务是独立维护的,具有独立维护 职务权限的用户毕竟少数。当某个子公司产生一个“安全部经理”的时候,这个职务究竟设置的权限属于整个集团,还是属于该子公司?所以Peoplesoft 产生了设置码,就是SetID(设置码,或者说设置区域)来解决这个问题,明确维护权限!假如系统设置了该子公司的S

20、etID,哪么“该安全部经理+该 SETID”是该子公司的职务!而不是整个集团的职务!Peoplesoft在设计全集团维护的职务时,用了“share”的SetID来区分,意思就是 全集团共享的职务。 所以,真正理解“人+部门+职务”这种设置模式,需要了解SetID的作用。国内系统的问题就在于没有SetID来区分用户的设置权限,在嘉扬、万古和铂金的系统里都没有看到,这才是Peoplesoft HR在系统结构上和这些系统最大的区别!标准岗位管理应用图例为Mercer做的2012年中国标准值为摘要。职业群等同于PS系统中职务类别,大多企业职务类别大致可以分为高管层、管理层、生产、销售等。部门等同于P

21、S系统中的职务职责(Job Function)的概念,例如,总经办、人力资源、财务、生产营运等。子部门等同于PS系统中的职务副职责(Job Sub-Function),职务副职责是基于职务职责划分的,例如,财务的Sub-Function有财务综合、风险管理、投资、财务控制、财务计划和税务等。在职务副职责更细的一级概念就是标准岗位,一个标准岗位仅对应一个JOB_FAMILY、JOB_FUNCTION、JOB_SUBFUNCTION。到标准岗位层级时,标准岗位等于实际岗位去掉部门属性概念,职务任务(Job task)和我们日常管理中的职责概念相等,他是比标准岗位更低层级的概念,一个标准岗位对应一个

22、或多个职务任务。通过项目和自己理解,要建立合理的标准岗位,基本上有两种方法,第一个请咨询顾问通过价值链和职务族群序列的方法论建立科学标准岗位,见过大型咨询公司做 出方案,例如美世(Mercer)和海氏(Hay)比较有操作性和实用性,国内像和致咨询的成果也不错,这些都是要付费。第二种方法基于现有的管理现状通 过归纳总结也可以建立一个或多套符合实际的标准岗位。通过业务线确定我们将要做几套标准岗位,例如集团性企业基于旅游、银行等多条业务线。确定后几套标准 岗位后,可以找出旗舰店或者标杆公司,在目前岗位的基础上通过合并归纳建立改业务线的标准岗位,例如,一家化工公司在开设第一家工厂时,他们所有岗位都必

23、须建立,伴随着市场需求的增加,在某地新建一个工厂,而此工厂建立只是为了就近解决市场需求,那么这两家化工厂可以共享一套标准岗位,而这套标准岗位和第 一家工厂岗位会十分相近,在概念上的差异是这套标准岗位没有第一家工厂的任何属性。标准岗位最好还是结合用途建立,规范的只是一套思路和管理思维,如果在企业不被客户和领导推崇,那么再规范的东西也是华而不实的,但作为顾问,心里必须知道什么是好的。PS实现打印PeopleSoft 中页面的打印,一般是用JavaScript来实现的。这里我详细叙述一下实现的步骤, 1.首先要创建一个Derived Record ,Record Name 为Print_Record

24、 ,里面包含两个字段 一个 long 类型的 HTMLAREA ,一个Char 类型的 Z_JS_PRINT. 2.创建一个页面,并且在level0 上放置 HTMLAREA字段,并另外放一个Button Button 的属性设置为 Destination 为External Link而且External Link的属性为Dynamic 然后到Button的 General 标签 把page field Name 设为PRINT_BTN 3.在Button字段的field FieldDefault写下如下的PeopleCode PRINT_RECORD.JS_PRINT.Value = jav

25、ascript:window.print(); 在Button被点击时 这段代码会触发浏览器的打印命令 4.在Component下面的 PRINT_RECORD 的Rowinit下面写如下的PeopleCode PRINT_RECORD.HTMLAREA.Value = media print body zoom:80%; #PAGEBAR,.PSHEADERTOOLBARFRAME, #PRINT_BTN display: none ; 上面的zoom命令是用来缩放页面大小的,#PAGEBAR,.PSHEADERTOOLBARFRAME, #PRINT_BTN display: none 这

26、段隐藏了页面的上button 和component下面的标准ButtonPeopleCode 处理压缩文件,文件打包下载 PeopleSoft中对文件附件的处理都是单个文件处理的,虽然在8.52版本新增了MAddAttachment(URLDestination, DirAndFilePrefix, Prompts, &UserFileArray, &ActualSizeArray, &DetailedReturnCodeArrayName , MaxSize , PreserveCase, UploadPageTitle, AllowLargeChunks, StopOnError) Fun

27、ction 实现了一次上传多个附件的功能,但是在下载附件的时候,还是只能单个下载,这样就给客户的操作带来的很多不便,这篇文章来说明一下如何在PeopleCode中调用Java类来实现对文件的打包REM * The file I want to compress;Local string &fileNameToZip = c:tempblah.txt;REM * The internal zip files structure - internal location of blah.txt;Local string &zipInternalPath = my/internal/zip/folde

28、r/structure;Local JavaObject &zip = CreateJavaObject(java.util.zip.ZipOutputStream, CreateJavaObject(java.io.FileOutputStream, c:tempcompressed.zip, True);Local JavaObject &file = CreateJavaObject(java.io.File, &fileNameToZip);REM * We will read &fileNameToZip into a buffer and write it out to &zip;

29、Local JavaObject &buf = CreateJavaArray(byte, 1024);Local number &byteCount;Local JavaObject &in = CreateJavaObject(java.io.FileInputStream, &fileNameToZip);Local JavaObject &zipEntry = CreateJavaObject(java.util.zip.ZipEntry, &zipInternalPath | / | &file.getName();REM * Make sure zip entry retains

30、original modified date;&zipEntry.setTime(&file.lastModified();&zip.putNextEntry(&zipEntry);&byteCount = &in.read(&buf);While &byteCount 0&zip.write(&buf, 0, &byteCount);&byteCount = &in.read(&buf);End-While;&in.close();&zip.flush();&zip.close();这样就是实现了对文件的打包,不过为了代码重用,我们可以将这段代码写成一个FunctionFunction Ad

31、dFileToZip(&zipInternalPath, &fileNameToZip, &zip)Local JavaObject &file = CreateJavaObject(java.io.File, &fileNameToZip);REM * We will read &fileNameToZip into a buffer and write it out to &zip;Local JavaObject &buf = CreateJavaArray(byte, 1024);Local number &byteCount;Local JavaObject &in = Create

32、JavaObject(java.io.FileInputStream, &fileNameToZip);Local JavaObject &zipEntry = CreateJavaObject(java.util.zip.ZipEntry, &zipInternalPath | / | &file.getName();REM * Make sure zip entry retains original modified date;&zipEntry.setTime(&file.lastModified();&zip.putNextEntry(&zipEntry);&byteCount = &

33、in.read(&buf);While &byteCount 0&zip.write(&buf, 0, &byteCount);&byteCount = &in.read(&buf);End-While;&in.close();End-Function;复制代码然后每次使用的时候,只需要调用这个Function就可以了。Local JavaObject &zip = CreateJavaObject(java.util.zip.ZipOutputStream, CreateJavaObject(java.io.FileOutputStream, c:tempcompressed.zip, Tr

34、ue);AddFileToZip(folder1, c:tempfile1.txt, &zip);AddFileToZip(folder1, c:tempfile2.txt, &zip);AddFileToZip(folder2, c:tempfile1.txt, &zip);AddFileToZip(folder2, c:tempfile2.txt, &zip);&zip.flush();&zip.close();PeopleSoft peoplesoft是一个很不错的产品,产品线如下: Campus Solutions (CS) Customer Relationship Manageme

35、nt (CRM) Enterprise Learning Management (ELM) Enterprise Performance Management (EPM) Financials Supply Chain Management (FSCM) Human Capital Management (HCM) PeopleTools (PT) Portal Solutions (PS) 对peoplesoft使用HCM比较多,其他模块比较少,PT、PS是基础。 先了解一下peoplesoft的产品技术架构:PIA有DB Server、Application Server、WebServe

36、r、BatchServer组成,PIA结构如图: 深入浅出之EBS薪资计提接口 现在市场上,实施Peoplesoft的公司大多数都用EBS做财务管理软件,今天一个朋友问我这个接口应该怎么做。我来说说以前项目的做法。 1、XX的接口设计 EBS和Peoplesoft薪资计提接口,首先要明确财务在薪资接口要求。比如都需要那类凭证。然后考虑凭证的数据源匹配的问题。首先从底层数据源开 始。财务凭证主要就是账户结构,财务的几段和人资管理的组织结构可能不是完全匹配或者根本就是两套管理。那这个时候就需要做映射。在XX公司的时候映射是 做在了EBS系统中,当时做3类的映射,公司映射表单,部门映射表单,薪资项和

37、科目段映射表单。这三类映射做好后。就按照GL_INTERFACE接口设 计一个自定义的接口表。PS使用AE技术把 可写数组表中的数据 传过来。 在PS可写数组表中有一些薪资项目的金额要用复数的形式汇总才可以。 在EBS和PS中存在一个问题,在设计的时候一定要把握好,就是小数位,EBS中一般是两位小数,但是PS中不同地区的社保可能是三位小数,这样存在小数差在生成凭证的时候就容易借贷不平,当然可以通过技术手段做平。 A. 安全性当时这个接口从ps到ebs是以明细数据传过去的。其实这样不太好。薪资的管理如果落在人资,那么这些保密数据就要以汇总格式过去。明细数据存在安全隐患。 B.维护性这些映射在财务

38、系统,那后期的科目变动和部门调整就都落在财务人员。 2. XX的接口设计 上面讲到维护映射,这个设计维护映射放在了ps系统中。ps系统按照薪资组吧元素划分开,针对元素分组来做科目映射,因为一类的元素的借贷科目基本是就是一对。这样做的维护量比较小。调整起来比较方便。 A。安全性 人资数据在AE程序中直接汇总过,EBS的维护人员就很难知道一组数据的分配规则。 B。维护性 部门调整一般都是人资部发起的,EBS跟着调整成本中心,那么从这个流程上说可能人资维护比较方便,薪资项映射一般情况下对应的科目很少有变化深入浅出Peoplesoft之Java使用 在Peoplesoft中使用java对象通过Crea

39、teJavaObject实例化对象,ObjectDoMethod来调用实例化对象中的方法。我把以前测试用的方法分享给大家。在peoplecode中调用java使用的反射机制。所以在使用过程中有哪些问题,可以在eclipse中使用反射机制模拟peoplecode调用。如下: 1、为了能快速使用Java中的类,首先在eclipse中对要使用的对象用反射机制模拟实现程序开发。 在使用Java反射机制调用函数的时候,函数的参数类型一定要正确。参数类型可以再eclipse里看。例如:package com.lashou.services;import java.lang.reflect.Construc

40、tor;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;public class PSDebug public static void main(String args) throws ClassNotFoundException, SecurityException, NoSuchMethodException, Ille

41、galArgumentException, IllegalAccessException, InvocationTargetException, InstantiationException HashMap emp = new HashMap();ArrayList empList = new ArrayList();empList.add(123);empList.add(234);emp.put(dept, new ArrayList();ArrayList empList1 = new ArrayList();empList1.add(123);empList1.add(234);(Ar

42、rayList) emp.get(dept).add(empList);(ArrayList) emp.get(dept).add(empList1);ArrayList el = (ArrayList) emp.get(dept);for (Iterator it2 = el.iterator(); it2.hasNext();) System.out.println(it2.next();Class hmCls = Class.forName(java.util.HashMap);Constructor cons = hmCls.getConstructor(new Class );Obj

43、ect obj = cons.newInstance();/ System.out.println(cons.newInstance(null);/* * Method addMethod = hmCls.getDeclaredMethods(); for(Method * m:addMethod) * * System.out.println(m.getName(); */Method putMethod = hmCls.getMethod(put, new Class Object.class, Object.class );System.out.println(putMethod);pu

44、tMethod.invoke(obj, new Object dept, empList1 );Method getMethod = hmCls.getMethod(get, new Class Object.class );System.out.println(getMethod);Object deptArrayList = getMethod.invoke(obj, new Object dept );Class al = deptArrayList.getClass();Method alMethod = al.getDeclaredMethods();for (Method m :

45、alMethod) System.out.println(m.getName(); Method sizeMethod = al.getMethod(size, null); System.out.println(sizeMethod.invoke(deptArrayList, null); String.valueOf(b)2。根据以上的实现方式用PS中函数以及对象实现调用过程JavaObject 返回的是java对象,这个对象可以直接调用Java方法ObjectDoMethod 可以调用 java Object对象的方法,比如Object obj = (Object)new ArrayLi

46、st(); 这样Object的实现是ArrayList ,那么ObjectDoMethod 就可以调用ArrayList的方法了,这个函数为了解决返回对象是Object时候使用的,因为Object对象没有子类的方法CreateJavaObject 相对Java中 new Object();这个函数调用会实例一个对象具体的实现(HashMap 和 ArrayList)如下:Local JavaObject &DeptHashMap = CreateJavaObject(java.util.HashMap);&DeptHashMap.put(Dept1, CreateJavaObject(java

47、.util.ArrayList);Local JavaObject &DeptArray = CreateJavaObject(java.util.ArrayList);&DeptArray.add(A);&DeptArray.add(B);Local JavaObject &DeptArray1 = CreateJavaObject(java.util.ArrayList);&DeptArray1.add(C);&DeptArray1.add(D);Local JavaObject &HmClass = GetJavaClass(java.lang.Class).forName(java.u

48、til.HashMap);Local JavaObject &HmConstructor = ObjectDoMethod(&HmClass, getConstructor, CreateJavaObject(java.lang.Class);MessageBox(0, , 0, 0, String(&HmClass);MessageBox(0, , 0, 0, String(&HmConstructor);Local JavaObject &HmInstance = ObjectDoMethod(&HmConstructor, newInstance, Null);MessageBox(0,

49、 , 0, 0, String(&HmInstance);Local JavaObject &putMethod = &HmClass.getMethod(put, CreateJavaObject(java.lang.Class, GetJavaClass(java.lang.Object), GetJavaClass(java.lang.Object);MessageBox(0, , 0, 0, String(&putMethod);&putMethod.invoke(&HmInstance, CreateJavaObject(java.lang.Object, DEPT, &DeptAr

50、ray);Local JavaObject &getMethod = &HmClass.getMethod(get, CreateJavaObject(java.lang.Class, GetJavaClass(java.lang.Object);Local JavaObject &DeptArrayList = &getMethod.invoke(&HmInstance, CreateJavaObject(java.lang.Object, DEPT);Local JavaObject &DeptArrayListClass = ObjectDoMethod(&DeptArrayList,

51、getClass);MessageBox(0, , 0, 0, String(&DeptArrayListClass);Local JavaObject &DeptSizeMethod = &DeptArrayListClass.getMethod(size, Null);Local string &DeptSize = ObjectDoMethod(CreateJavaObject(java.lang.String), valueOf, &DeptSizeMethod.invoke(&DeptArrayList, Null);MessageBox(0, , 0, 0, &DeptSize);

52、Peoplesoft中的EMC功能最近在研究邮件审批的功能。PeopleSoft原始的思路在提交或者审批的时候发送审批邮件给审批人。邮件内容使用mailto:这个功能。审批人通过这个回复邮件就算完成了邮件审批。Peoplesoft中启动EMC的app engine process。定期去扫描 收件箱中的审批邮件完成邮件审批。 这种方式的缺点:对邮件客户端要求比较高。解析邮件内容比较麻烦而且未必做到精确解析。好处:审批可以填写意见等 最新的解决方案: 邮件发送的配置使用Peoplesoft原有的配置。重写邮件模板生成类,在邮件模板中可以定制化很漂亮的表单。同时在邮件模板中增加 审批 拒绝 查看审

53、批单的按钮。通过点击按钮调用Iscript来完成 审批 拒绝 查看审批单的功能。再重写邮件模板的时候可以封装自己模板基类。让定制化的模板继承他,通过一定的规则实例化。 Iscript要想能通过url直接访问,需要开启 公共用户访问权限。并且需要实现 Peoplecode登录。因为只有实现Peoplecode登录,在审批的时候才能正确获取当前登录用户。 Iscript 完成后使用%Response输出html 提示用户 审批结果。Button调用AE我们不仅可以用页面跑AE也可以用PeopleCode 调用AELocal ProcessRequest &RQST;&RQST = CreateProcessRequest();/* Set all the Required Properties */&RQST.RunControl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论