Questions and discussion about using ProcessMaker: user interface, running cases & functionality

Moderator: amosbatto

By dipolediamond
I recently completed a book on ProcessMaker - "A Beginner's Guide to Business Process Automation with ProcessMaker 3.1" on leanpub and the primary motivation is to provide those new to ProcessMaker with a step by step guide to building and deploying their first process on ProcessMaker. The first 9 (nine) chapters are available to read online on leanpub - ... ead_sample.

Please help share with anyone new to ProcessMaker and who might benefit from it. The link to the book is Your feedback on the book will also be greatly appreciated.

The book is now available as an Apress title - and also on Amazon - ... 484233441/
Last edited by dipolediamond on Thu Dec 28, 2017 4:38 am, edited 1 time in total.
User avatar
By amosbatto
I just randomly flipped through parts of the book, and it looks pretty good. I hope that you have good sales of the book.

Would you like me to make this post a sticky announcement on the forum for the next week (so it stays at the top of the list of posts)? We are always happy to see others promoting the use of ProcessMaker.

I have two observations about the book. In the beginning when installing PM with Bitnami, you should mention that Bitnami installations are generally only used for testing and developing processes. A manual installation is recommended when using processes in production, because Bitnami installations cannot be upgraded to later versions and Bitnami installations are generally slower and use more resources than manual installations.

In your JavaScript code, I recommend only using jQuery selectors. For example, you use code like this that mixes standard JavaScript and jQuery:
Code: Select all
//Register comments handler to button events
document.getElementById("form\[comment_button\]").onclick = addComments;
$("form").submit( addComments );
First of all, you don't need to escape the [ and ] characters in standard Javascript, so this will work:
Code: Select all
document.getElementById("form[comment_button]").onclick = addComments;
However, the PM Developers don't recommend using document.getElementById() to obtain the elements of a form, because the developers say that it might not always work in the ProcessMaker Mobile App, although I haven't seen an example where it doesn't work. However, it is necessary to use the custom helper functions setValue(), getValue() and setOnchange() which only work with jQuery, instead of the value and onchange properties in standard JavaScript. To avoid problems and possible confusion, we recommend always using jQuery(), even though it may be more complicated in some instances.

Officially, we recommend that you use code like this:
Code: Select all
$("#comment_button").find("button").on("click", addComments);
I personally don't like using the find() function because you have to know what HTML element you are searching for ("button", "div", "input", "select", "textarea", etc.) with each type of control, so I directly select the element through its ID "form[id]" which requires escaping the square brackets [ and ] with \\:
Code: Select all
$("#form\\[comment_button\\]").on("click", addComments );
I also don't see much reason to use .on() instead of .click() which is a shorthand that does the same thing:
Code: Select all
$("#form\\[comment_button\\]").click( addComments );
Some people find escaping with jQuery selectors to be very confusing, so they use this code:
Code: Select all
$("[id='form[comment_button]']").click( addComments );
No matter which method that you choose, I do recommend using jQuery() in all instances, so that people get used to using jQuery and won't try to use document.getElementById().value and document.getElementById().onchange which will cause problems.

If you want me to review your code in the entire book, you can email me a copy of your book at [email protected] and I will look at it when I have time.
Hi Amos,

I really appreciate the feedback. Yes, please make it a sticky post. I will send you a copy of the book as it could really use your wealth of experience in making it a better resource for learning ProcessMaker.

I will also make the suggested updates. Once again, thank you.
User avatar
By amosbatto
Hi Dipo,
I made this post a global announcement for the next 2 weeks, so hopefully people will notice it.

Primero, tus comillas estan mal y olvidaste termin[…]

First of all, you are using JavaScript, not Java. […]

Stop submit from javacript

Do it this way: form = $("#637207031573dcea[…]

I can't find the database table where this informa[…]