REST Activity Feature

Hi @tijs,

Added Http Task to flowable-modeler.
Please review.

https://github.com/h7kanna/flowable-engine/commit/1806e24aff528beec3476a672a060e1439dd94df

Best Regards,
Harsha

Hello team,

I finished an initial implementation of HTTP Task.

Features

  1. Http Task in flowable-modeler
  2. Http Task specification and documentation ( feedback and comments would be beneficial for final version)
  3. Http Client configuration in flowable.cfg.xml ( Only few parameters for now)
  4. Implementation based on Apache HTTP client and this can be customized. Not all the settings for the client are implemented.
  5. Test cases for basic exception handling and retry scenarios

Todo list

  1. Implement and write tests for all http methods
  2. Implement and write tests for all http client configuration parameters
  3. Implement and write tests for https
  4. Implement and write tests for authentication
  5. Implement and write tests for response parsing/handling
  6. Performance testing and optimizations, code cleanup/refactor
  7. Any other features/changes based on review and comments

Submitting pull request to get feedback and reviews.

Thanks,
Harsha Teja Kanna

1 Like

Really nice work hasrsa, I will review the code changes that have you made.

Best regards.

Hi @Sibok666,

Quick view of the HTTP task.
https://github.com/h7kanna/flowable-engine/blob/master/userguide/src/en/ch07b-BPMN-Constructs.adoc#http-task

To Create http-task in flowable modeler (Assuming tomcat installed and flowable-idm.war is already copied)

cd flowable-engine
mvn -T 1C clean install -DskipTests -Dprofile=distro

cd flowable-engine/modules/flowable-ui-modeler
mvn -T 1C clean install -DskipTests
cp flowable-ui-modeler-app/target/flowable-modeler.war ~/Sdk/apache-tomcat-8.0.43/webapps/

Thanks,
Harsha

1 Like

Hi Harsha,

Great work, Iā€™ve added a couple of comments to the PR.

Thanks,

Tijs

Hi Harsha.

Ok, on the next days i will be creating the test.

Best regards.

Hi Harsha,
Do you have an example/test code to generate/deploy/run http service programatically. In line comments around setting attributes and other help will go a long way in adoption of the module you have developed (thanks for the contribution). will certainly help me :slight_smile:

Hi,
I am trying to do the same through postman , as its provided in flowable doc to access rest api , but while creating TASK using rest , its giving 404. I am trying the same way to hit rest api as mentioned in doc (https://www.flowable.org/docs/userguide/index.html#_tasks)
the url i hit in postman : localhost:8080/flowable-rest/service/runtime/tasks/1
Basic auth credentials passed :kermit
response i get : {
ā€œmessageā€: ā€œNot foundā€,
ā€œexceptionā€: ā€œCould not find a task with id ā€˜1ā€™.ā€
}

Could you help or anyone who faced a similar thing

Hi,
How do I disable SSL cert verification for the REST Activity feature? Is it possible to do dynamically?

Iā€™m running the flowable-all-inone docker image and Iā€™m getting an SSL certificate path error. I can see that the http REST activity task has a spring bean property disableCertVerify, which may do what Ii want but I donā€™t know how to set this when running the all in one docker image. Is it possible?

Many thanks
Ian

It would also be useful to know how to set the property (disableCertVerify) when running the process engine with spring boot. ie can it set in application properties and if so what is the property key exactly.

I also have found that HttpActivityBehavior seems to be missing from the latest flowable vesion 6.4.1, at least using the spring starter I get an external server error running my workflow with the http task

Could not find org.flowable.http.HttpActivityBehavior

ā€“
Ahh actually, Ok to answer the second part of the question myself, it seems all the dependencies arenā€™t included in the spring starter pom so need to add:

org.flowable flowable-http 6.4.1

Still looking for where ā€˜disableCertā€¦ā€™ should be setā€¦
Thanks again
Ian

I have the same question. Where to set disableCertVerify?
And more importantly, how to configure the httpClient to use a CA root certificate?

See Http Client configuration in the doc on how to set in the flowable.cfg.xml config file or via code in this JUnit example.

Thanks @dbmalkovsky. I tried setting in flowable.cfg.xml as mentioned and put the xml in the classpath. But the config changes from cfg didnā€™t get picked up. As a test I tried overriding FlowableEngineConfiguration in flowablt-ui-task-conf and hardcoded the following in #processEngineConfiguration

    processEngineConfiguration.getHttpClientConfig().setDisableCertVerify(true);

But I still get this error:

Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Hey @naeem,

If you are using Spring Boot then you canā€™t use flowable.cfg.xml.

Not sure how you are overriding the FlowableEngineConfiguration. However, if you want to change the ProcessEngineConfiguration with Spring Boot then you would need to use an EngineConfigurationConfigurer. For example:

public EngineConfigurationConfigurer<SpringProcessEngineConfiguration> customProcessEngineConfigurer() {
    return configuration -> {
        configuration.getHttpClientConfig().setDisableCertVerify(true);
    }
}

Cheers,
Filip

Thanks Filip. I decided to override FlowableEngineConfiguration to pass in a custom SSLContext rather than disabling it. We using PKI certificates (and need CA Root certs for https) so was able to configure that correctly like this.

Thanks, Naeem.

Hi Harsha,

There is a problem using http-task for the delete method.
#error message: java.io.EOFException: No content to map to Object due to end of input
Can you help fix the problem?

property configuration:

I have a same question.
Where to set disableCertVerify via flowable-modeler?
I donā€™t have flowable.cfg.xml file. (maybe we ca add this file to modeler?)

1 Like

Is the REST service task run asynchronously or as some type of blocking call?