壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2733|回复: 14

[分享知识 原创连载]PeopleSoft技术男的成长,供我回忆也可给进入这行业的朋友帮助

  [复制链接]
发表于 2013/7/20 21:44:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
        应四海哥( @纵横四海 )的邀请,在这里写一写PeopleSof技术男成长的故事,作为一个入行一年的菜鸟,在ERP100这个大神出没的论坛上写东西,未免有点班门弄斧。然而,我想每个人都有着在自己行业成长的道路,每个人故事也不尽相同,我看别人的故事,然后从中学到知识,得到感动,今天我也写下自己成长的历程。一是可供将来我自己回忆,二是也可以给未来进入这个行业的人一些指点。

<第1篇>
         第一 次接触PeopleSoft是2011年的11月,当时在无锡IBM实训基地实训结束,忙着参加各种公司的笔试,准备各种各样的面试。11中旬的时候,IBM过来一个高级经理,来招聘PeopleSoft的实习生,经理在台上是一番演讲,然后我就热血沸腾,决定了放弃NTT公司的offer,去学习PeopleSoft,将来做一个优秀的顾问,能给企业,给高校提供完善的,高校的解决方案(现在回头看看,发现自己要成为一个优秀的PeopleSoft顾问,还有很长的路要走)。
        当时选择PeopleSoft的原因有三个:1.我个人实在不喜欢做HTML,jsp,java之类的,去搞那些华丽的,炫酷的界面或者页面开发,而是愿意去做和业务相关的技术。2.Java 行业太多人,有各种大牛,我到这个行业的话,或许要很久才能混出个名堂,或许很久之后也不能混出名堂,或许会一直都混不出名堂。3.我个人的学习能力比较强,到PeopleSoft这个行业,入门起来会很快,我也喜欢这种挑战。

        进入公司之后,或许是由于项目还没开始,也可能是我们进了项目也帮不上忙。公司就暂时的把我们放在实训基地。但是公司又不能让我们闲着,就给我们找来PeopleSoft Campus Solution 的UPK(User Productivity Kit),让我们看,由于当时对Campus Solution 系统一点也不懂,对大学的教务也是一点不懂,UPK又是英文的,而我们的英文又在大学里还给老师了,所以看起来是相当的慢,也相当的痛苦。过了两天之后我们几个人采取了另外一种方案,我们集体先把整个UPK的目录整理出来,然后每个人负责一个模板,campus Solution 总共分为, 招生和录取(Student recruitment and admissions),学生记录(Students Record)学生财务(Student Finance ),校园社区(Campus Community ) ,学术辅导(Academic Advisement),成绩单(Gradebook ),  我当时负责学生记录模块。然后我们每天下午抽出来一个小时开一个小型的培训会,有各个模块的负责人来讲解自己学习到的自己模块的知识。虽然当时每天看英语很苦逼,但是每天都能学到很多知识,感觉很充实。

    第一篇连载,貌似有点跑题,因为写的内容和技术一点关系都没有。确实是好久不写文字了,思路都有点乱的,不过怎么说,这也算一个好的开始吧,因为万事开头难,一旦找对了方向,我们所需要做的就是,把脚迈出去。

@hbnlzx

该贴已经同步到 王明雷的微博

点评

很有价值;宝贵的总结;  发表于 2013/8/14 06:49

本帖被以下淘专辑推荐:

发表于 2013/7/21 14:42:10 | 显示全部楼层
个人简介:PeopleSoft一年7个月的技术顾问
连载主题:PeopleSoft菜鸟技术顾问的成长
发布频率:一周一次
首次发布日期:7月20号
计划发布在那个板块:PeopleSoft
更新周期:每周
本连载的亮点是:PeopleSoft如何入门
其他要说的话:

@纵横四海 点评:我已经给你介绍了一位老师,你跟着他学就行,然后把每周学的东西记录下来;丙南 @hbnlzx 是我的好朋友非常热心,你就榨干他的知识吧;我相信他也会很开心你的成长的;
 楼主| 发表于 2013/7/20 22:30:26 | 显示全部楼层
自己给自己顶一下,有点厚颜无耻啊
发表于 2013/7/21 14:49:57 | 显示全部楼层
基本上你的看法和我的看法有相同点(具体参考  2006/12/20 我的连载原文 http://bbs.erp100.com/forum.php? ... 23761&fromuid=8);技术是不断变化的,而业务是不变的,作业务会随着工作年限的增加和行业经验的增加不断的升值;所以我建议掌握软件功能后因专注在一个行业内作,这样你的经验会不断的增值;无论社会如何变化,懂行业的人,精通的人毕竟是少数,并且是稀缺的;
 楼主| 发表于 2013/7/27 21:40:24 | 显示全部楼层

         
                由于最近遇到一点工作上的麻烦,写原创的思路被割断了,我这次就先整理一篇之前的技术贴,等我处理了这段的事情,在开始写原创的,对不住各位了。
           这次的帖子是关于如何在PeopleSoft系统中实现打印页面的功能,我们知道,在PeopleSoft HCM里,一般上了薪酬模块的话,都会客户化工资单页面,去匹配公司之前的工资单的报表的格式。有的时候,这个工资单页面又需要打印出来,以供员工的使用。
         PeopleSoft 中页面的打印,一般是用JavaScript来实现的。这里我详细叙述一下实现的步骤,

        1.首先要创建一个Derived Record ,Record Name 为Print_Record ,里面包含两个字段
           一个 long 类型的 HTMLAREA ,一个Char 类型的 Z_JS_PRINT.
        2.创建一个页面,并且在level0 上放置 HTMLAREA字段,并另外放一个Button
       Button 的属性设置为 Destination 为External Link  而且External Link的属性为Dynamic
      
       clipboard.png
       然后到Button的 General 标签 把page field Name 设为PRINT_BTN
       A5576497C9064286BF0498A2CE5EA551.jpg
     3.在Button字段的field FieldDefault写下如下的PeopleCode
         PRINT_RECORD.JS_PRINT.Value = "javascript:window.print()";  
       在Button被点击时 这段代码会触发浏览器的打印命令
      4  .在Component下面的 PRINT_RECORD 的Rowinit下面写如下的PeopleCode
   PRINT_RECORD.HTMLAREA.Value =        "<style type=""text/css"">       @media print {       body {     zoom:80%;}       #PAGEBAR,.PSHEADERTOOLBARFRAME,       #PRINT_BTN { display: none }}       </style>";
       上面的zoom命令是用来缩放页面大小的,#PAGEBAR,.PSHEADERTOOLBARFRAME,       #PRINT_BTN { display: none }}
这段隐藏了页面的上button 和component下面的标准Button


       这样就实现了页面的打印。

点评

你应该说:小Kiss  发表于 2013/7/28 06:34
会好起来的  发表于 2013/7/27 22:40
你现在遇到的问题,只是你人生中一个太小的问题了,时间可以解决一切问题;车到山前必有路,没有路还可以爬山;  发表于 2013/7/27 22:32
人生在于选择;很理解你;时间会解决一切问题;  发表于 2013/7/27 21:57
发表于 2013/7/29 09:27:47 | 显示全部楼层
打印可以使用javascript方式来实现,也是使用报表的形式,在点击打印的时候,生成数据文件返回给用户。这样更方便调整数据的格式

点评

报表格式也做过,后代逻辑生成数据文件,然后页面弹出报表,再去实现打印。但是弹出报表之后,怎么调用本机的打印功能呢?还是让用户手动去打印?  发表于 2013/7/29 09:42
发表于 2013/7/29 10:20:31 | 显示全部楼层
hbnlzx 发表于 2013/7/29 09:27
打印可以使用javascript方式来实现,也是使用报表的形式,在点击打印的时候,生成数据文件返回给用户。这样 ...

文件的方式都是手工去打印

点评

那这个明了,以后也写一下这种方式  发表于 2013/7/29 11:00
 楼主| 发表于 2013/8/22 13:38:33 | 显示全部楼层
PeopleCode 处理压缩文件
   PeopleSoft中对文件附件的处理都是单个文件处理的,虽然在8.52版本新增了MAddAttachment(URLDestination, DirAndFilePrefix, Prompts, &UserFileArray, &ActualSizeArray, &DetailedReturnCodeArrayName [, MaxSize [, PreserveCase[, UploadPageTitle[, AllowLargeChunks[, StopOnError]]]]]) Function 实现了一次上传多个附件的功能,但是在下载附件的时候,还是只能单个下载,
这样就给客户的操作带来的很多不便,这篇文章来说明一下如何在PeopleCode中调用Java类来实现对文件的打包
  1. REM ** The file I want to compress;
  2. Local string &fileNameToZip = "c:\temp\blah.txt";

  3. REM ** The internal zip file's structure -- internal location of blah.txt;
  4. Local string &zipInternalPath = "my/internal/zip/folder/structure";

  5. Local JavaObject &zip = CreateJavaObject("java.util.zip.ZipOutputStream", CreateJavaObject("java.io.FileOutputStream", "c:\temp\compressed.zip", True));

  6. Local JavaObject &file = CreateJavaObject("java.io.File", &fileNameToZip);
  7. REM ** We will read &fileNameToZip into a buffer and write it out to &zip;
  8. Local JavaObject &buf = CreateJavaArray("byte[]", 1024);

  9. Local number &byteCount;
  10. Local JavaObject &in = CreateJavaObject("java.io.FileInputStream", &fileNameToZip);

  11. Local JavaObject &zipEntry = CreateJavaObject("java.util.zip.ZipEntry", &zipInternalPath | "/" | &file.getName());

  12. REM ** Make sure zip entry retains original modified date;
  13. &zipEntry.setTime(&file.lastModified());

  14. &zip.putNextEntry(&zipEntry);

  15. &byteCount = &in.read(&buf);

  16. While &byteCount > 0
  17. &zip.write(&buf, 0, &byteCount);
  18. &byteCount = &in.read(&buf);
  19. End-While;

  20. &in.close();
  21. &zip.flush();
  22. &zip.close();
复制代码
这样就是实现了对文件的打包,不过为了代码重用,我们可以将这段代码写成一个Function
  1. Function AddFileToZip(&zipInternalPath, &fileNameToZip, &zip)
  2. Local JavaObject &file = CreateJavaObject("java.io.File", &fileNameToZip);
  3. REM ** We will read &fileNameToZip into a buffer and write it out to &zip;
  4. Local JavaObject &buf = CreateJavaArray("byte[]", 1024);

  5. Local number &byteCount;
  6. Local JavaObject &in = CreateJavaObject("java.io.FileInputStream", &fileNameToZip);

  7. Local JavaObject &zipEntry = CreateJavaObject("java.util.zip.ZipEntry", &zipInternalPath | "/" | &file.getName());

  8. REM ** Make sure zip entry retains original modified date;
  9. &zipEntry.setTime(&file.lastModified());

  10. &zip.putNextEntry(&zipEntry);

  11. &byteCount = &in.read(&buf);

  12. While &byteCount > 0
  13. &zip.write(&buf, 0, &byteCount);
  14. &byteCount = &in.read(&buf);
  15. End-While;

  16. &in.close();
  17. End-Function;
复制代码
然后每次使用的时候,只需要调用这个Function就可以了。
  1. Local JavaObject &zip = CreateJavaObject("java.util.zip.ZipOutputStream", CreateJavaObject("java.io.FileOutputStream", "c:\temp\compressed.zip", True));

  2. AddFileToZip("folder1", "c:\temp\file1.txt", &zip);
  3. AddFileToZip("folder1", "c:\temp\file2.txt", &zip);
  4. AddFileToZip("folder2", "c:\temp\file1.txt", &zip);
  5. AddFileToZip("folder2", "c:\temp\file2.txt", &zip);

  6. &zip.flush();
  7. &zip.close();
复制代码
OK,这样,就实现了我们的需求,希望这篇文章对大家有用。


您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 02:36 , Processed in 0.037282 second(s), 21 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表