I am having a lot of trouble with these concepts and the different properties that fall under each (such as value group, value list, page group, page list). Is anyone able to break this down in a simple, potentially real world example?
First, there is no such thing as a property mode. I know, I know, it shows up in the material, but....when you read mode, think type.
aside: there was a time when the term property mode was used, but Pega has simplified a lot and uses standard terms. The term mode still shows up in the Help file so it is used in training, but one day....
So, remember mode = type.
There are different types of properties.
The type of property defines what values that property is able to store. For example, if I define a property's type as being an integer, I can only store numerical digits in that property's value. The letters A, G, H, or Z just will not take, nor will any other non-numerical characters.
Pega organizes property types into three broad categories (these categories is where the term mode originally came from):
A property can be of a single value type. Examples of single value types are integer, a string (or, text), a date, a boolean, a decimal, etc. For example, I create a property named FirstName and I set the type to Text. I can store a single textual value in that property.
A property can be of a page type. Pages are just a collection of other properties, regardless of the type. For example, I create a property named Customer and I set the type to Single Page. The Customer page is a single page - because it represents a single customer. I would then define the other properties that make up the Customer. Those other properties could be single value properties such as FirstName and LastName, but I could also define another page type property named Address. The Address page then contains other properties, and so on.
A property can be of an advanced type. Advanced type properties are....well...advanced.
aside: the value group and value list types are in the advanced category - and those two types just seem to fascinate some people, so they keep showing up in training. Notice all you get is the definition, you don't get to use them; because they are...well...advanced :)
Now, sometimes, I need to collect more than one value for a given property - be it a single value or a page type property. For example, even though I want to collect data about a single customer, a single customer might have more than one address (for example, shipping and billing addresses).
That is where list and group come in.
Let's start with list.
A list is considered an ordered list of values. It is considered ordered because every time you add a value to a list type property, that value gets stored in a numbered index position. So, the first value stored goes in the first index position, the second value stored goes in the second index position, and so on. To store a value in a list, you do not have to specify the index position; the newest value will always be stored in next available numbered index position. A good example is the Address property for my Customer. An address is made up of multiple attributes (street, city, state, postal code, etc), so I definitely need to make the Address property a Page type. However, if I want to collect more than one address per customer (a list of addresses), I need to define the Address property as a Page List type property.
So, my Customer property is a single page, which contains a page list (for those addresses).
A value list is effectively the same thing (you can store more than one value in a numbered index), but instead of using a property type from the Page category you can only select a property type from the Single Value category. I have too much disdain for this property type to come up w/ a good example off the top of my head, so I'll come back and edit this post when I do. But, basically, a value list falls in the single value category - it is a single property that can store more than one value.
I will edit this post with an explanation of groups in a bit.
To riff on Eddie's post, I'll provide examples of a value list and value group.
First, remember that because they're value properties, they only store a single value, not a collection of values.
With that out of the way, here's an example of each:
Value list: consider a list of skills. You might have a set of skills (ability to speak Spanish, qualification for level 2 support, etc.), so that's the list part. But you're only tracking a single value - the name of the skill. So: Skill(1) = "Spanish"; Skill(2) = "Level 2 support". The result is a single column, ordered array of values.
Value group: Just like a value list, but unordered. A collection of phone numbers would be a good candidate for a value group. You have a home phone, a work phone, a mobile phone. You could create an unordered array (group) of a single value (phone number), such as: Phone (Home), Phone (Work), Phone (Mobile), Phone (Other). So, you have a single column, unordered array of values.
I hope this helps to clarify Eddie's explanation.