I am developing the idea of tag/rule-driven product content management. It’s a product management system based on two concepts: rule engine and tags/tag groups.
So far, I have neither come across any client willing to experiment, nor found any ready-made solution from someone else. Maybe you know of one?
Here’s the concept.
1. Products (almost) have no specifications. They have unordered tags. For instance, to indicate that a product is red, you don’t need to select the “color” property and set it to red. You just add the “red” tag. The system then shows a list of groups containing the word “red,” and you need to select the correct group (though you can choose not to; a specially trained person can do it later).
2. Tags are organized into groups. A single tag can belong to different groups. For example, there can be a “color” group with the tag “red.” Tags are grouped after they are assigned to a product. Some tags might be in different groups. For instance, the color of lipstick and the color of a car might both contain the word “red,” and the tag “iPhone” can belong both to the “type of case” group and to the “compatible with” group.
3. Some tag groups are mandatory for all products. Some groups are mandatory only if there are tags from certain other groups. For example, if there is a tag from the “type of accessory” group, the system may require you to choose something from the “compatible with” group. This is managed by dynamic rules, for example in Drools.
4. Some groups are incompatible with each other. This is also determined by dynamic rules, for example in Drools. Essentially, these are validation rules. They sound like this: if the product type is electronic watches, and there is no tag from the brand group, a critical message will be displayed that a brand needs to be entered.
5. For the administrator’s convenience, you can select a template where groups are already nicely assembled into a form, and there are various dropdown lists. Templates are constructed on the fly by some chief administrator without involving a programmer. For entering smartwatches, there may be one template, and for entering beds, another. The admin can choose any template, as well as enter any tags, but the system can help select a more suitable one. The rules cover this: the admin enters a couple of tags, and the system suggests such templates (one, two, three). The admin clicks on the suitable one and fills it out further. The template does not restrict the admin. They can input any tags on top of those in the template. Or not fill in some fields (because filling them out is governed by validation rules – see pt. 4).
6. Characteristics like size or weight contain numbers. Numbers can’t be represented as tags, right? Actually, they can, just in this case indicating the group is mandatory. It looks like this: the user starts typing 135 mm, the system shows in a dropdown list “Length: 135 mm” and “Width: 135 mm”. Which groups to show for the entered value are controlled by dynamic rules, for example, on Drools.
7. Thus, a tag has a type. It is determined either automatically upon entry or set by a rule, for example, on Drools, as soon as a group is selected. For instance, all values in the “Length” group are numbers.
8. There is no concept of a category tree. Categories are also tags. They are just grouped under “Categories,” “Electronics,” “Mobile Phones.”
9. If a tag is not found in any group, it can be linked to a product without a group, or the admin can manually specify any group. In this case, the next time this tag will already be displayed with this linked group.
10. There are special tag managers who see which tags appear and to which groups they are linked. They can remove tags from groups, create new groups, rename them, etc.
Rules are frequently mentioned above. Rules are a two-part structure: conditions and actions. Conditions, and there may be several, operate with groups, tags, and their values. Actions indicate what to display to the user as hints, changes in the tag cloud’s status. Actions can also delete, modify, or add tags automatically. For example, the quality of filling in product data might be a value from the “Product data quality” group and have some scale.
Groups have properties such as “display on website,” “place in facet for search,” “readonly for admin,” etc. Displaying values can be linked to group functionality.
Integrating media objects like images or videos doesn’t fit perfectly into this concept yet. If they are treated the same way, you first upload them, then link them to the product, and then select a group related to the image type. Again, rules in Drools come into play for selecting suitable groups (for example, based on the type of uploaded media asset) or for validation (for example, the image size is too small for a group).
There is also concern that it might be difficult to manage hundreds of rules if so many accumulate, and it might be hard to make an interface for hundreds of groups and thousands/tens of thousands of values. But supposedly, this is all fixable.
Timofey Shikolenkov?
