This section contains a quick overview of conventions and rules that are outlined and discussed in more detail in the remaining sections of this document. Use this checklist whenever developing or reworking pipelines.
Things you should do:
Things you should not do:
The following general rules apply:
private
. This includes start nodes of scheduled jobs and start nodes called during dbinit.public
have to be secured depending on the context in which they are used:pipeline-acl.properties
file (see Pipeline Access Control Lists below).CheckApplicationContext
pipeline first.Pipeline access control lists provide in conjunction with the prefix-pipeline a way to define for each pipeline which permissions a user needs to execute this pipeline.
The general syntax of entries in the pipeline-acl.properties
file looks like this:
<PipelineName>[-<StartNodeName>]=[<Context>:<PermissionID>][;<Context>:<PermissionID>]
Here are some examples:
// An empty list – no permission required ViewCatalog-Dispatch= // More than on entry – all permissions required ViewCatalog-Edit=Organization:VIEW_CATALOG;Catalog:MANAGE_CATALOG // No start node given – those entries are used for all start nodes // that are not explicitly defined ViewCatalog=Organization:VIEW_CATALOG // Valid Contexts are defined by the application, // e.g. the Organization and Channel are provided ViewHelp=
Usually viewing pipelines model the page flow of an application whereas process pipelines provide access to the Java business logic at pipeline level. This separation ensures that:
The following rules help to ensure high quality standards for process pipelines:
In regards to input parameters to process pipelines mind the following notes:
Keymapper-Pipelet
is not an option since it adds to the complexity of the pipeline. domainID
must be named "DomainID" although it is actually a UUID.Process pipelines must be generic enough to be located in a business component.
There might be cases where a certain application requires a certain implementation of a process pipeline. For example, a process pipeline to validate the user input is specific in a way that it can only be used in a sellside back office application. As an exception such process pipelines can be located in the back office application cartridge ( sld_enterprise_app or sld_ch_base).
Pipelines that manipulate real business objects should be analyzed very carefully to decompose it into more generic process pipelines if possible. By decomposing the pipelines and building a stable pipeline API the process pipelines become more reusable resulting in reduced development effort.
Templates should not be located in a business component cartridge. Exception: Templates used by the XML export to generate the XML data or templates to convert import data from a proprietary format into Intershop 7 XML. Such templates may be located in business component cartridges.
The business logic of existing process pipelines should not be changed to ease migration.
If parts of a process pipeline need modification, do not create a new process pipeline. Instead create a new start node in the same pipeline and copy the pipeline logic. Mark the "outdated" start node deprecated and name the new start node to be used in the future.
This section provides recommendations regarding the naming of presentation pipelines. All presentation pipelines should start with the View
prefix. The prefix is followed by the name of the business object to be viewed.
This type of pipeline is used whenever a pageable/non-pageable list of business objects is to be viewed. It is also used to perform an action on a set of selected business objects, e.g., delete. This pipeline usually displays the entry page of an HTML back office module.
Examples: ViewDepartmentList, ViewUserList, ViewBuyingOrganizationList
Start Node | Description |
---|---|
ListAll | Determines all business objects to be shown. |
Search | Performs a search to determine a set of business objects to be shown. Use this start node name in case you do not distinguish between simple and advanced search. |
SimpleSearch | Performs a simple search to determine a set of business objects to be shown. |
AdvancedSearch | Performs an advanced search to determine a set of business objects to be shown. |
Paging | Determines the next page of business objects to be shown. |
Delete | Deletes a selected set of business objects. |
Refresh | Re-displays the currently active page in case of a pageable list or simply all business objects (jump to node |
This type of pipeline is used whenever a single business object is to be created/edited/deleted. It is also used to perform an action on a single business object, e.g., set as default, copy.
Examples: ViewDepartment, ViewUser, ViewBuyingOrganization
Start Node | Description |
---|---|
New | This start node prepares the creation of a new business object. In most cases it simply creates a new webform and sets the creation template. Hint: To reduce template complexity, do not use the same template for create and update. |
Edit | This start node prepares the update of a new business object. In most cases it determines the business object to be edited, creates a new webform and sets the update template. |
Show | This start node is used to show a new business object in read only mode. In most cases it determines the business object to be shown, prepares data and sets the update template. |
Create | This start node creates a new business object. If the object could not be created successfully, the creation template is shown again (there should be an error message shown somewhere on the template). |
Update | This start node updates an existing business object. If the object could not be updated successfully, the update template is shown again (there should be an error message shown somewhere on the template). |
Delete | Deletes a given single business object. If the object deletion succeeded, the corresponding list template is shown again. |
This type of pipeline is used whenever associated objects or object relations of a single business object are to be listed. In most cases these pipelines are used to display a "tab" in an object detail view.
Example: ViewDepartmentUserList, ViewProductCustomAttributeList, ViewProductAttachmentList, ViewProductBundledProductList
Start Node | Description |
---|---|
ListAll | Determines all associated business objects to be shown. |
Search | Performs a search to determine a set of associated business objects to be shown. Use this start node name if you do not distinguish between simple and advanced search. |
SimpleSearch | Performs a simple search to determine a set of associated business objects to be shown. |
AdvancedSearch | Performs an advanced search to determine a set of associated business objects to be shown. |
Paging | Determines the next page of associated business objects to be shown. |
New | This start node prepares the creation of a new associated business object. In most cases, it simply creates a new Web-form and sets the creation template. If the creation/update process is very complex or uses a wizard-approach, you may consider using a separate pipeline, i.e., ViewDepartmentUser, ViewProductCustomAttribute. Hint: To reduce template complexity, do not use the same template for create and update. |
Edit | This start node prepares the update of an associated business object. In most cases it determines the associated business object to be edited, creates a new webform and sets the update template. |
Create | This start node creates a new associated business object. If the object could not be created successfully, the creation template is shown again (there should be an error message shown somewhere on the template). |
Update | This start node updates an existing associated business object. If the object could not be updated successfully, the update template is shown again (there should be an error message shown somewhere on the template). |
This type of pipeline is used whenever an associated object or object relation of a single business object is to be created/edited/deleted. This functionality can also be included into the corresponding list pipeline in case of a simple creation/update/deletion process.
Example: ViewDepartmentUser, ViewProductCustomAttribute, ViewProductAttachment
Start Node | Description |
---|---|
New | This start node prepares the creation of a new associated business object. In most cases, it simply creates a new Web-form and sets the creation template. Hint: To reduce template complexity, do not use the same template for create and update. |
Edit | This start node prepares the update of an associated business object. In most cases, it determines the associated business object to be edited, creates a new Web-form and sets the update template. |
Create | This start node creates a new associated business object. If the object could not be created successfully, the creation template is shown again (there should be an error message shown somewhere on the template). |
Update | This start node updates an existing associated business object. If the object could not be updated successfully, the update template is shown again (there should be an error message shown somewhere on the template). |
Select<Object> | Use this start node name in case of a wizard-like creation/update process. Example: SelectRole, SelectSupplier |
To facilitate the reuse of process pipelines, they should be named according to the task they perform, and not after their position in a workflow or the business process they represent. Thus process pipelines can be called from different places.
Examples: CreateBasket, LoginUser
Different entry points to the pipeline or special result handling methods should be reflected by defining separate start nodes.
Example: ProcessPayment-AuthorizationFailed