The CLSA Architecture Application Build exam consists of 3 to 6 questions of varying complexity which evaluates the ability of a candidate to develop and architect solutions using the PEGA platform. Please refer to the Exam preparation guide for further details.
Question 6 from a retired exam scenario is attached to this post. You are encouraged to work through this question by collaborating in this discussion thread. A solution will not be provided.
It is estimated that a candidate proficient in design and implementation would be able to complete this task in 3 hours.
The starting point migration file for this question is a Human Resources Application which is also attached to this post.
Complaints 7 and 8 states the hardware and software lists are difficult to use. My solutions are:
1. Introduce a modal when "Add Item" is clicked. This modal allows the user to search courses using autocomplete. Once one is selected and Submit is clicked, the entry is added to a pagelist and displayed in the main grid. This solution means changing the purpose of the grid from all items (selected and unselected) to a grid containing only the selected items. Reason for picking this solution is that if you had 200 items and only selected 3. It's not easy to see the 3 you've selected as they might be items 2, 140 and 199. In most other systems, lists like these only contain items that have already been selected/added.
2. Introduce column filtering and sorting. That's it.
What are people's thoughts on this? Is my first solution over-engineering it? It's pretty much a refactor of the entire section.
Was it expected that the 01-02-01 release of this application include the full implementation of the 'total hours of training selected field' feature request? While this was a user complaint it isn't really a performance symptom so wasn't sure if we were expected to implement the feature.
Yes. You are correct, it is not purely a performance issue. Not all the complaints where performance related. Item 6 had to do with a change that improves the User Experience and allows the end user to see the total number of hours allocated to orientation without having to compute the total manually. This improvement saves the end user time and therefore also improves the time it takes to complete the task of assigning courses.
"6. Computing the number of Course hours selected requires a manual calculation. Please add a total hours of training selected field at the top of the form."
Attached is my solution, I'd welcome any feedback. For the lists I mostly left them implemented the same way in the existing UI except added sorting by name.
@sogoc has a good idea for a better method of building a list of courses, I figured the list was manageable for a user if we simply sort it. This conveniently was also easier/faster to implement, though his solution might overall be better!
One area I wasn't sure how to handle was the "difficult to edit and maintain office locations" issue. I wasn't sure if we were to build a better way to edit locations...it doesn't seem like there's enough info to do this properly, since you wouldn't want anyone to edit them. I proposed a few ideas and left the implementation out.
This took me about 4 hours including packaging, testing, etc.
This is regarding your following highlighted comments.
"The table is sourced via the D_CoursesList data page, which is thread scoped. Since the list of courses is not likely to change, this can be changed to node scope to prevent every case from loading the data page."
Even though moving to Node level scope is the right choice, i feel doubt your mentioned reason for that. As per my understanding, regardless of changing data, if it is common for users in the server, you can for Node level data page. You can specify desired loading setting in Load management section.
I think you're right @GayanD20. My reasoning was that the thread scope is sometime chosen because it guarantees the data page is freshly loaded for each case. But you're right that the scope should be more about whether users need the same set of data, since someone could have a tab open for a long time. The scope wouldn't guarantee fresh data.
For the course list grid, you mentioned an alternate design to use repeating grid with a plus symbol, where the user selects a course from a dropdown or autocomplete control, then clicks plus to add as many additional courses as they choose. Since there is no complaint from the user on Usability but only requirement is to display the total of hours on selection in the grid. Providing a new UI to select the course from dropdown and add it to grid is kind of a UI change for end users who are already familiar with existing UI. Also in any of the approach, the grid will grow to next page with increase in list of courses.Can you elaborate on this why you are specifically pointing on UI changes?
We can use DE to get the total of selected courses to display on the same screen. We have to use "When ever input changes", instead of "When ever used" as total displayed on the same screen.
Hi , Is there a single starting point for all 6 questions are there are starting points for each question ?
I ask this to get a view about the packaging for each questions.To be more specific , i have to plan to export the whole application for all 6 jars or if i need incremental exports for ease of grading.
Question 1 does not require a starting point since it is a new application
Question 6 is a different application with performance issues
The remainder of the questions utilize the starting point application
As stated in the exam preparation guide: "Solutions for each question should be constructed in such a way that they are isolated from other solutions and can be easily tested and migrated independently. There are no dependencies between questions."
When packaging your solution for a particular question, it is only necessary to include the rules and data you developed. You should not include rules and or data which are already supplied with the starting point for a question.
I faced the same issue in PE , and tried in VM Linux lite .
another thing - the package contains UI-Kit-7:10-01 and also included in the application stack inplace of Build on Application, where as VM has already upgraded version UIKit 10.01. should this need to be included as action points.
I went through this question and implemented a solution without going through the solution to implement the solution completely based on my understanding. PFA the solution doc and RAP(I have not deployed and tested the rap in a seperate env). I want to get the feedback from you guys regarding my understanding as well as how i have created the doc. Any feedback will be appreciated.
I am practicing on the App Build Retired question #6 and i would share my approach to the analysis. I think there shall be an approach not only on UI Fixing and remediation by following CLSA UI best practices but also to evaluate if in the alert and logs files there are issues.
To this end my analysis started by evaluating these issues first then going to UI Rememdiation issues. Can some LSA instructor advise if this is the correct approach ?
For my point another important factor is also how data will evolve in future. There are not requirements in this sense but the Application shall be Build for Change and as such apply configurations that helps in this direction. The question is if Pega is System of Record and the amount of future data, but one of the options could be to maintain the data in an external db or data warehouse.
“Identify Home Office”, “Select Orientation Plan” and “Select Computer Hardware and Software” screens are very slow.
Causes: The cause was due to Rule Assembly.
Remediations: After applied the Static assembler the stats were ok and no alarm was generated
Use of A Data Page at Requestor Level, so that the updates on the lists are maintained, at Node Level we could have problems of configuring the access groups.
Alternate Solution: If there are a lot of data in future one option is source the data in an external db.
End User Compliants
"List of Home Office locations is not sorted Difficult to edit and maintain
Causes: The UI was not easy to use. The configuration of the Grid needs to be changed.
Remediations: Used autocomplete to search and filter. Modified the way the ordering on the report definition is applied.
Used the Manage Change feature to delegate the Office Locations in the Case Manager Portal. Some security on accessing this link shall be needed.
Alternative Solution: better maintain the Dropdown control since the number of Items < 50 as per UI Best practice.
If Data increase we need to apply Pagination to UI Grids and Report definition configurations. That case the solution with Autocomplete becomes better.
List of Courses is long
Causes: The UI was not correctly configured. The configuration of the Grid needs to be changed.
Remediations: Applied a Filter on the Grid by typing the name of the course the grid is reduced. Modified the ordering on the report definition that sources the Data Page.
Alternative Solution: If Data increase we need to apply Pagination to UI Grids and Report definition configurations.
Same observations as in 1. concerning the amount of records and if make sense to move them in a dedicated db or data warehouse
Add total hours in Orientation plan UI
Remediation: Used a declared expression, using the Refresh when condition on the number items selected, not applying Refresh Section on the action set.
Alternative Solution: other way is to use still a declared expression but apply the Refresh on target section on the Event’s action set
List of Hardware cannot be sorted and easily to find
List of Software cannot be sorted and easily to find
Causes: The UI was not correctly configured. The configuration of the Grid needs to be changed.
Remediations: Modified the Grids to let filtering and Sorting.
Use Async Loading on Software tab.
Use Pagination of the grid and on the sourced Report configuration. Even if there no need of scrolling due to current amount of records is always good practice apply pagination to load efficiently more data in future.
For the courses list not being easy to select issue - WHen we dont have any editing allowed on the grid only then we see the filtering option. But in that case we are unable to check the checkboxes to select the courses.
So I created a couple of filter fields by ID & Title so that user can search for a Course based on these 2 fields. And in order to not disturb the PageList on pyWorkPage, I initially Copied the list onto a tempPage. Whenever the filter used or cleared I first reset the TempPage with the complete list of courses.
With this approach once u filter the recrods, user will see only the filtered list & will be easy to select. Once the selection is done & screen is submitted, we mark the selected courses on TempPage as selected on the main pyWorkPage.