Again, for a sense of completeness, I can’t leave off the Moodle Integration Bolt-On session that I attended. Actually, I attended it up front (co-presenting).
The presentation went well from my point of view. I thought my material went rather fast, but on the other hand, I hope that it communicated everything in a short amount of time without waisting the attendees time. I’ll be interested to hear any feedback. Hopefully, they got the information from the session they were looking for.
One of the things that stood out to me was the fact that many people seemed to have trouble on the Moodle side. They were doing different kinds of batch integrations and such. Hopefully, Sean’s presentation of using the plugin to configure Moodle to come get the data really helped them.
Another thing I enjoyed was having a couple of the people from the Student Administration Integration Pack attending. They helped me understand their product more. Our solution was very simple, easy, and cheap. But, their solution is much more complete. They pointed me to IMS Global.org where they are working on a standard for this kind of data. They are including more information than just the data elements that we are interfacing, and in addition, they are including outcome information, which would entail interfacing the grades back into PeopleSoft.
This afternoon, I attended Jim Marion’s PeopleTools 8.51 in Action session. I understand that someone else was supposed to present it, but Jim did a great job. I left excited to delve into the new tools features.
The intro was kind of fun again. I felt like I just missed the book give-a-way — the winner was directly in front of me 4 rows! Oh well. Also, I noticed that Jim is a hard core HTML guy: it’s obvious when someone uses a web page with check boxes to show and check off topics covered. I thought it was cool. Is that the cheese grater showing through?
First, he mentioned again the different between tools 8.50 and 8.51 in the drop down menu. In tools 8.51 you have to click on each menu item whereas tools 8.50 only required you to click on the first item that opened the menu. As a result, in tools 8.50, the menu is called a hover menu, and in tools 8.51 it is called a drop down menu. Jim showed how you can change the navigation type in PeopleTools > Portal > General Settings.
One great point that Jim made was that you need to pay attention to documentation. When you switch your stylesheet / look, your documentation screenshots will not match. Just something to think about.
Next, Jim talked about the SWAN styles sheets. I think I did this part wrong when I did my tools upgrade steps (and no one said anything!) because I was modifying stylesheets in App Designer. I was following the directions in the tools upgrade document. Jim simply went to PeopleTools > Utilities > Administration > PeopleTools Options. Then, he changed the stylesheet name to PTSTYLEDEF_SWAN (if I remember the name right).
Type-ahead was another topic. Someone asked a question about the chatter/network traffic caused by the type ahead. Jim pointed out that it may break even considering you don’t have to reload the whole page. So, you are sending less data more often, which makes for more consistent traffic rather than spikes.
The Work Center is another new feature to PeopleTools 8.51. It seems to work similar to Related Content except that the extra information displays to the left of your main content rather than at the bottom. A great example is to add a navigation collection to allow easy navigation within a group of related screens.
On a side note, Jim pointed out the new operational dashboard feature. In structure and content, you can open up homepage tabs under portal objects. When you create a new content reference, you can change the Usage Type to Homepage Tabs. Then, you see a new option call Operational Dashboard.
Persistent Search is another new feature to Tools 8.51. You have to enable it on the Web Profile, and it is the Recent Search Results on the bottom of the Caching tab. The local cache uses the browser’s HTML5 local storage to save search results. Once you search, you will can reopen the search results from the bread crumbs bar without generating another query to the database.
One of the questions asked at the end caught my interest. The person asked if persistent search created a security concern since it was storing information on the user’s computer. Jim referred her to another person for the answer, and I wouldn’t mind seeing the answer. From what it looked like in the session, the search results only persisted during life of the user’s session. When Jim logged out and back in again, the search results were gone. So, that doesn’t seem like much of a security concern to me.
Jim talked about a few other features. He pointed out that pagelets load independently via AJAX. So, even if you have many pagelets, you see the homepage immediately, and the pagelets slowly load as the info comes across. He also mentioned embedded help, which is something you have to turn on from the page in App Designer. Finally, he pointed out the way you can pop grids out of the page, modal messages show as AJAX dialogs, and secondary pages are modal.
So, this was a great session, and I have a bunch of new features to blog about!
I have been very careful to keep my work life separate from this blog because it is really a personal blog. At the same time, I made it a goal to blog what I learned at HEUG, and so, there is a conflict.
Let me just simply say that this morning I had the opportunity to sit in on the Continuing Education session where my company presented our new ACE product. The tool automates the Enrolling, Admitting, and Paying for non-credit courses. Since I have done some development on the product, I was able to answer a few questions, and the session went very well. I enjoyed seeing the high level of interest from the attendees.
If you have a chance, check out the information on the company website. Also, please let me know if you have any questions or comments so that I can pass them on to our team at MIS.
Today, I also attended the PeopleSoft Test Framework: Simplifying Upgrade and Maintenance session by Scott Schafer. Again, I was very impressed with the tool. I think this is going to revolution implementation projects in PeopleSoft and routine maintenance for systems.
Scott listed many of the advantages of PTF as the test framework is frequently called. The PTF has a record and playback feature that allows a power user to easily generate a test by recording his actions in the system. One of the key features is that PTF understands PeopleTools metadata. It does not just record clicks on the screen at a specific coordinate but clicks on a particular record, field on a particular row. Also, because they are managed as PeopleTools objects, the tests are comparable between environments and migrate-able to another environment.
First, Scott discussed the Usage Monitor. He said it was an extension of the Performance Monitor. I need experiment some more with this because I didn’t quit understand whether or not a full implementation of Performance Monitor is required. Basically, this tool tells you which of the delivered objects you actually use. You turn the monitor on in production, and it records which objects get touched by your every day use.
One of the questions I would have is how accurate is this list of objects? I mean what about periodic events such as year-end processing? Unless you keep your monitor on for a full year or you happen to build your list during the year-end time frame, you are not going to get objects specific to that process.
Next, Scott mentioned a new feature of App Designer. Now, it stores the compare report data in the database. So, you can build your own tools to automate processing the compare results.
Then, Scott demoed the product. He showed how you can click a record button. The browser would open and you could perform a basic activity in PeopleSoft. The client tool would list the steps that you went through to make the activity happen. Then, he clicked the play button, and he showed how it would step through those actions rather quickly to reproduce the activity. Finally, he showed how an error would stop the test and show the problem.
The cool part is the object tracking. Each test represents a business process. PeopleTools tracks the objects related to the test. Therefore, you can tie an object to a business process. Also, your usage data shows you which objects you use, and you can make sure that you have a test for each one of those objects. Finally, you can compare the objects included in a bundle or maintenance pack with your usage data to see which part of it affects you. Again, you can then tie that back to the tests and see which business processes gets affected by the new code/objects.
All in all, I think this is the first iteration of a cool tool that will revolutionize PeopleTools.
Today, I attended Jim Marion’s PeopleTools Tips and Tricks session at the HEUG Alliance 2011 conference. I really enjoyed the session, and now I need a client who wants one of the features that Jim discussed in the session. I’m eager to try this stuff out!
First, I learned that I have the personality of a cheesehead! But, that’s okay. I can admit to the geek label. Also, I was only 4 chairs away from getting the free book! Oh well, I am going to have to quit being cheap and just buy it. After hearing the session, I really want it now.
The first topic presented was the use of Pagelets. One of the cool parts about them is that they aren’t a customization. Rather, they are considered configuration. So, they are a great way to add to your system without having to customize and worry about upgrade costs.
One of the examples was to take a YouTube video and get the embed HTML to include in a Pagelet. Another example was to place a navigation collection on the home page. Then, I thought it was really cool to see how the XSL Template was used to make the collection a accordion style menu.
In passing, Jim pointed out the differences in the tools navigation between 8.50 and 8.51. I think I read this on the Grey-Sparling blog but didn’t understand it. In 8.50, you just hover over the folder in the menu to open it, but in tools 8.51, you have to click each folder to open it. Something to watch out for…
The related content is a great tool. Two of the cool examples were to take the title of a page and display Google search results next to the PeopleSoft page. Similarly, the other example displayed search results from Amazon based on the page title. I have a scenario where I would like to display a customized data page beside the delivered data without customizing the delivered component. Related content solves that problem. I wish Jim would have had the time to delve into how he set up the Related Content.
Integration Broker Ajax was another topic that was great to see. Again, I wish he would have had time to show how he was able to make it work. I know that Integration Broker is a complicated topic, and it would have taken way too long.
The Mobile app idea was quite interesting. I know how to create a native Android application, but I didn’t realize that you could create an HTML 5 app that would run across the different mobile platforms — something to look into. Then, using Integration Broker to power it was a great idea.
Finally, Jim suggested using Fiddler and Wireshark as troubleshooting tools because you can see what data passes between systems/clients. It was nice to see that work and you can use it to troubleshoot setup.
I am very excited about the HEUG Alliance conference next week. This is my first time attending, and I will get to present with Sean McKay from George Fox University. So, if you are planning to attend, please catch us at 4:30 on Tuesday afternoon. We will be talking about our Moodle interface that we worked on last year (a great project).
Also, I won’t be presenting at it, but I will be at the ACE presentation at 9:30 that morning. Joe Rossi and Adrian Valente will be presenting the tool that we built in PeopleTools to automate enrolling and accepting payment for continuing education from self service. So far, that tool has generated a lot of excitment, and I think that presentation will be good.
Finally, I can’t leave off Jim Marion’s presentation at 9:30 on Monday. I am going to make it a special point to listen in on his presentation to see what tips and tricks I can pick up from him. Ever since his announcement about his book, I have wanted to meet him, and now I will get to hear him speak!
If it wasn’t for the time conflict, I would have mentioned Grey Sparling’s presentation at 9:30 on Tuesday morning. Their blog posts are always helpful, and I would love to hear a presentation. I saw something about the sessions being recorded, and I will have to do some research to see if I can watch or listen to the recording.
Anyway, if you are attending and you read my blog, please stop by the MIS, Inc. booth and say hi. I would love to meet you.
I had an issue recently where I needed to trace a process to try to determine where a bug was occurring. So, I decided to try to document how I could setup tracing on a single process.
To enable tracing, you need to open the process definition. Online, navigate to PeopleTools > Process Scheduler > Processes. Then, search for the process that you want to trace. Make sure that you change the search page so that you are searching by process name and not the process type. Once you have the Process Definition open, go to the Override Options tab. Then, change the parameter list to “Append” and enter the desired trace settings.
My options aren’t to say that Ketan’s are wrong. I just cut out some of the options I wouldn’t use to trim the extra info in the log file. I also normally use traces for troubleshooting, so my options are tuned for that.
You can read below for details on what each of these does.
The -TRACE option sets the tracing for the App Engine program generally speaking. For example, it can turn on the trace output that displays which steps run in which order. Here are the different options (from the psappsrv.cfg file):
1 = Trace STEP execution sequence to AET file
2 = Trace Application SQL statements to AET file
4 = Trace Dedicated Temp Table Allocation to AET file
8 = not yet allocated
16 = not yet allocated
32 = not yet allocated
64 = not yet allocated
128 = Timings Report to AET file
256 = Method/BuiltIn detail instead of summary in AET Timings Report
512 = not yet allocated
1024 = Timings Report to tables
2048 = DB optimizer trace to file
4096 = DB optimizer trace to tables
If you’ll notice, 135 is “Timings Report to AET file”, “Trace Dedicated Temp Table Allocation to AET file”, “Trace Application SQL statements to AET file”, and “Trace STEP execution sequence to AET file”. My preference just leaves off the Timings Report. I think the timings report would be good for performance tuning, but if you are troubleshooting, it is just overhead.
The -TOOLSTRACESQL option specifics the SQL tracing besides the SQL executed by steps in an App Engine program. This would include any PeopleTools system database communication, and more importantly, it would include any database access caused by a component interface driving an online screen.
Here are the options:
1 = SQL statements
2 = SQL statement variables
4 = SQL connect, disconnect, commit and rollback
8 = Row Fetch (indicates that it occurred, not data)
16 = All other API calls except ssb
32 = Set Select Buffers (identifies the attributes of columns to be selected
64 = Database API specific calls
128 = COBOL statement timings
256 = Sybase Bind information
512 = Sybase Fetch information
1024 = SQL Informational Trace
Again, the recommended setting is 31, which includes: “All other API calls except ssb”, “Row Fetch (indicates that it occurred, not data)”, “SQL connect, disconnect, commit and rollback”, “SQL connect, disconnect, commit and rollback”, “SQL statement variables”, and “SQL statements”. My choice would just be to see the SQL statements and the variables because that is the most important information. Commits and Rollbacks can be important, but you generally know when those happen and don’t need the extra information. The fetches will tell you how many rows you will receive but it won’t give you any of the data, so it just clutters the trace file. Those options can be helpful, but unless you need them, I would leave them off.
Finally, the -TOOLSTRACEPC option turns on tracing for PeopleCode. This could be PeopleCode steps in an App Engine, or it could be PeopleCode in a component accessed by a Component Interface. Here are the options:
2048 = Trace each statement in program (recommended)
The recommended option is 1984, which includes: “Show function return value”, “Show parameter values”, “Trace internal function calls”, “Trace external function calls”, and “Trace start of programs”. For me, I want to see what PeopleCode is running, so the most important option would be 2048 — Tracing each statement. The variable assignments, fetched values, parameter values, and function returns all show the data as it flows through the PeopleCode, so I find those helpful in troubleshooting. For me, that adds up to: 3596.
I noticed that Grey Sparling posted their presentation from their Development Best Practices Webinar. I really wish I hadn’t missed this one. I bet it was a good presentation, but you can probably gleam some of it from the presentation. I have always admired their work.
Recently, I have been doing a lot of Memory troubleshooting.
Here are some windbg commands that helped:
Load the sos module (for .Net 4.0)
.loadby sos clr
List all of my object specific to my program:
!dumpheap -stat -type <parent namespace>
List all the instances of a particular object:
!dumpheap -type <namespace>.<object class name>
List references to the object:
Break on garbage collection:
!findroots gen any
List references to the obect (must break in garbage collection):
Show sizes in the memory:
List large strings in memory:
!dumpheap -type System.String -min 10000
Then, I also found that you can use the SOS module with within Visual Studio. First, in the project settings, I had to go to the Debug tab and check “Enable unmanaged code debugging” under “Enable Debuggers”. Then, in the immediate window, I could run the following command:
I thought my problem seemed to be related to the Data Grid view just like this forum post. The post lists a code fix, but my problem is finding out where I place the code. This blog mentions putting the code in the Form Close, but my problem is during the execution of the program.
Actually, it ended up being that I was loading a hidden column into the grid that was taking a lot of memory. I had a Select * SQL statement, and I had to list only the fields that I wanted in memory.