Review Workflow or Assignment Workflow is a workflow which enables the user to request a review after a document change and assign this review step to a group.
The assigned group's members are the only ones that can accept or reject the request. The request can be cancelled by the authorized user or an admin.
CMS | Version |
---|---|
11.x | 0.1.2 |
12.x | 0.2.x |
14.x | 1.2.1 |
16.x | 2.0.0 |
See CHANGES for release notes.
For release processes, see Hippo Forge Release Process.
- Make sure you have the forge Maven2 repository reference in the root pom.xml of your project.
<repositories>
<!-- SNIP -->
<repository>
<id>bloomreach-maven2</id>
<name>Bloomreach Maven 2 Repository</name>
<url>https://maven.bloomreach.com/maven2-forge/</url>
</repository>
<!-- SNIP -->
</repositories>
- cms-dependencies pom.xml
<dependency>
<groupId>org.bloomreach.forge.review-workflow</groupId>
<artifactId>review-workflow-frontend</artifactId>
<version>${review-workflow.version}</version>
</dependency>
<dependency>
<groupId>org.bloomreach.forge.review-workflow</groupId>
<artifactId>review-workflow-repository</artifactId>
<version>${review-workflow.version}</version>
</dependency>
-
Shared dependencies (Can be deployed in cms.war by adding dependency in cms/pom.xml instead if request online review not used)
- root pom.xml:
... <!-- pom.xml's dependency section (not dependencyManagement) --> <dependencies> <dependency> <groupId>org.bloomreach.forge.review-workflow</groupId> <artifactId>review-workflow-shared</artifactId> <version>${review-workflow.version}</version> </dependency> </dependencies> <!---cargo profile --> .... <container> <systemProperties> </systemProperties> <dependencies> <dependency> <groupId>org.bloomreach.forge.review-workflow</groupId> <artifactId>review-workflow-shared</artifactId> <classpath>shared</classpath> </dependency> </dependencies> </container> ....
- distribution:
... <dependencySets> <dependencySet> <useProjectArtifact>false</useProjectArtifact> <outputDirectory>shared/lib</outputDirectory> <scope>provided</scope> <includes> <include>org.onehippo.cms7:hippo-addon-review-workflow-shared</include> ....
-
(Optional for request online review) site pom.xml
<dependency>
<groupId>org.bloomreach.forge.review-workflow</groupId>
<artifactId>review-workflow-hst</artifactId>
<version>${review-workflow.version}</version>
</dependency>
- (Optional for request online review) hst-config.properties
reviewworkflowuser.repository.address = vm://
reviewworkflowuser.repository.user.name = reviewonlineuser
reviewworkflowuser.repository.pool.name = reviewworkflowuser
reviewworkflowuser.repository.password =
First, build/install the plugin itself locally:
$ mvn clean install
Next, move to demo folder and build/run it:
$ cd demo
$ mvn clean verify
$ mvn -Pcargo.run
See /hippo:configuration/hippo:workflows/default/handle/frontend:renderer/review
Setting | Description |
---|---|
requestReview.enabled | Enable review request plugin button |
onlineRequestReview.enabled | Enable optional online review request plugin button |
multipleReviewRequests.enabled | Enable creating multiple review requests |
multipleReviewRequests.limit | Max number of review requests that can be created by anyone in total |
acceptReview.enabled | Enable accept a review |
cancelReview.enabled | Enable canceling a review |
rejectReview.enabled | Enable rejecting a review |
dropReview.enabled | Enable dropping a review |
internal.assign.list.path | Value list that populates the assign dropdown. Will always be taken into account |
For the online review to work there are several things necessary to set in place.
For the demo project we have setup the following to work with the "hst" addon. Beware this is example configuration setup.
Set /hippo:configuration/hippo:workflows/default/handle/frontend:renderer/review/@onlineRequestReview.enabled
to true (Boolean).
...
/preview:
jcr:primaryType: hst:mount
jcr:uuid: cca9cdc1-77c1-4266-847f-2cc179c73a8f
hst:alias: reviewworkflow
hst:type: preview
/rest:
jcr:primaryType: hst:mount
jcr:uuid: 3fb118d6-e6da-4d40-ae63-4bb2a37a29c0
hst:alias: rest
hst:ismapped: false
hst:namedpipeline: JaxrsRestPlainPipeline
hst:types: [rest]
4. There are 2 value list available in the administration/Review Workflow folder. These are the assignment list which appears when you do a review request.
-
internal assign list:
This is an additional list of values you can add to the group list.
-
online request list
This is an list of email addresses where the preview link can be send to.
It is important that the administration folder is present before adding the repository module to the CMS. Because these value lists are being bootstrapped.
As an example add the org.onehippo.forge.reviewworkflow.hst.ExampleReviewWorkflowComponent as the componentclassname and reviewworkflow (bootstrapped in default) as your template
/review-workflow:
jcr:primaryType: hst:component
jcr:uuid: 3faf19fb-a55b-45f5-94d9-658355fa8068
hst:componentclassname: org.onehippo.forge.reviewworkflow.hst.ExampleReviewWorkflowComponent
hst:template: reviewworkflow
dont forget to include the component on your detail page!
- event-handler
- email-addon
these modules make sure there is an event listener in the CMS which listens explicitly to the request review event and sends a mail to a certain user.
example of online review mail:
******************************************************************
Sending the following email to [email protected] <[email protected]>
A review was requested for The medusa news, by user admin
Document link: http://localhost:8080/site/preview/news/2016/12/the-medusa-news.html?workflowId=450a142e-efc2-42ed-adfe-fd88b6d9f4b9
******************************************************************
These modules are not supported by Bloomreach and can be used as inspiration or only for demo purposes.
-
Download FakeSMTP from: https://github.com/Nilhcem/FakeSMTP
-
Run it as:
java -jar fakeSMTP-2.0.jar -s -p 2525 -a 127.0.0.1
- Email module in demo project is already configured to use the above information
The dropdown that contains assignable groups can be populated dynamically, based on currently logged in user and/or the document in question. To achieve this:
- Add a custom spring bean definition to cms/src/main/resources/META-INF/hst-assembly/overrides in which you implement org.bloomreach.forge.reviewworkflow.cms.reviewedactions.AssignableGroupsProvider
<!--keep the id, change the fully qualified class name-->
<bean id="org.bloomreach.forge.reviewworkflow.cms.reviewedactions.AssignableGroupsProvider" class="com.bloomreach.your.implementation"/>
- Note that you could also pass a jcr session to this bean in the spring configuration