Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

In this tutorial, we will following the guideline of developing a plugin to develop our Bean Shell Hash Variable plugin. 

1. What is the problem?

Hash variable is convenient in used, but sometime we want to do some condition check before display a value. But, Hash variable does not provide the ability to do condition checking.

2. What is your idea to solve the problem?

So, how to solve this issue? By looking at the Plugin Types that supported by Joget Workflow, we may need to develop a Hash Variable Plugin to allow us to write our scripting for condition checking. There are quite a number of Bean Shell plugins provided as default plugin for several plugin types. We can do one for Hash Variable plugin as well.

3. What is the input needed for your plugin?

Hash Variable plugin does not provide interface for user to configure, but to develop a Bean Shell Hash Variable plugin, we need somewhere to put our Bean Shell script. We can reuse the Environment Variable to store our script. So the Hash Variable syntax will be a prefix with environment variable key.

e.g.: #beanshell.EnvironmentVariableKey#

But, this may not be enough, we may need some way to pass in some variable also. We can consider to use a URL query parameters syntax to pass in our variables because it is easier to parse later on.

e.g.: #beanshell.EnvironmentVariableKey[name=Joget&email=info@joget.org&message={form.sample.message?url}]#

4. What is the output and expected outcome of your plugin?

What are we expected from this Bean Shell Hash variable plugin? The Bean Shell Hash Variable plugin is for admin user to use while building the app. Once it is used, the Hash Variable will replaced by the output return from the Bean Shell interpreter. So that the admin user can do condition check before display something to normal user.

e.g.: Display a welcome message for logged in user but display nothing when the user is an anonymous.

5. Is there any resources/API that can be reuse?

To develop Bean Shell Hash Variable plugin, we can refer to the source code of all the Hash Variable plugin and Bean Shell plugin. Especially, we can refer to Environment Variable Hash Variable plugin on how to retrieve environment variable using a variable key. We can also refer to Bean Shell Tool or Bean Shell Form Binder plugin on what to execute the script with Bean Shell interpreter. 

We can use getUrlParams method from StringUtil to help us parse parameters passed in in URL query parameters syntax.

6. Prepare your development environment

Always has your Joget Workflow Source Code ready and builded by following this guideline

Let said my folder directory as following. This tutorial is prepared with a Macbook Pro and Joget Source Code version 5.0.0. Please refer to Guideline of developing a plugin for other platform command.

Code Block
- Home
  - joget
    - plugins
    - jw-community
      -5.0.0

The "plugins" directory is the folder I will create and store all my plugins and the "jw-community" directory is where the Joget Workflow Source code stored.

Run the following command to create a maven project in "plugins" directory.

Code Block
languagebash
cd joget/plugins/
~/joget/jw-community/5.0.0/wflow-plugin-archetype/create-plugin.sh org.joget.tutorial beanshell_hash_variable 5.0.0

Then, the shell script will ask you to key in a version for your plugin and ask you for confirmation before generate the maven project.

Code Block
languagebash
Define value for property 'version':  1.0-SNAPSHOT: : 5.0.0
[INFO] Using property: package = org.joget.tutorial
Confirm properties configuration:
groupId: org.joget.tutorial
artifactId: beanshell_hash_variable
version: 5.0.0
package: org.joget.tutorial
Y: : y

You should get "BUILD SUCCESS" message shown in your terminal and a "beanshell_hash_variable" folder created in "plugins" folder.