Grega Bremec 3 éve
szülő
commit
2be7c87316
1 módosított fájl, 57 hozzáadás és 0 törlés
  1. 57 0
      README.md

+ 57 - 0
README.md

@@ -0,0 +1,57 @@
+Using the remote RHPAM API in 100 ways
+======================================
+
+This project contains essentially two completely different things:
+
+ - a fairly complete curl-based REST client for RHPAM
+ - a number of JAX-RS implementations of various RHPAM clients
+
+The first one is called ```curl-client.sh``` and (optionally) loads its
+configuration from ```curl-client.conf``` (or some other file, as might be
+specified by command-line options. Run with ```--help``` to learn more about
+it.
+
+The other are four three implementations RHPAM clients, each of which exposes
+two endpoints, one that will start a process, and one that will send a process
+a signal. They are all designed to work with the ```StartStopStart``` process
+model from the ```pam-simple-process``` project.
+
+They all use CDI to inject an instance of a corresponding WS-client into the
+implementation class, using CDI __qualifier annotations__ to tell the CDI
+container which of the producer methods in ```WebTargetProducer``` need to be
+invoked to instantiate the client.
+
+In turn, the CDI producer class uses ```ConfigProducer``` to get access to
+configuration settings from ```rhpam-rest-client.properties``` that tell it
+what endpoint to use when talking to RHPAM and how to authenticate.
+
+More detail on the implementations:
+
+ - ```ManualInvocationClient``` is much like the ```UseRestEasyManualClient```
+   class from ```kie-rules-processes``` project; it talks to the RHPAM REST
+   endpoints using an instance of ```WebTarget``` and does the response
+   "unmarshalling" with the help of a simple class called
+   ```ManualRhpamResponse```
+
+ - ```ProxyInvocationClient``` is alike to ```UseRestEasyProxyClient``` from
+   the ```kie-rules-processes``` project, and uses a made-up JAX-RS interface
+   defined in ```RhpamEndpoints``` to generate the RestEasy proxy client
+
+ - ```SwaggerInvocationClient``` uses Java code generated by the
+   ```swagger-codegen``` Maven plugin, which is still configured in
+   ```pom.xml```, but disabled (that is, disconnected from Maven lifecycle);
+   only the minimum amount of code needed to perform basic
+   ```ProcessInstanceApi``` operations was added to the project, and some of
+   the low-level ```ApiClient``` and ```ProcessInstanceApi``` code had to be
+   modified to support basic HTTP authentication (see comments), thanks to the
+   missing authentication data in ```swagger.json``` from RHPAM
+
+The exposed endpoints just forward the various parameters to the actual JAX-RS
+clients:
+
+ - Kie Container ID
+ - Process Model ID
+ - Process Instance ID
+ - Signal Name
+
+See the code for more information in the comments.