University Project Device-Task BPMN #741
Replies: 43 comments 20 replies
-
Hello Jose When you are extending the BPMN Modeller you are using the core BPMN extension mechanism. That is one way to add custom properties, like your technical data, into a BPMN model. You can see your data in the XML Tag of your model file.
In this way a software can now read this data and do something with it. The Imixs-API provides a service task to access those model informations during the processing life-cylce. Since extending the BPMN modeler is always associated with high implementation efforts, the Imixs-Workflow engine provides different ways to model technical details. For example, you can connect a BPMN Data Object with your Task Element. And the Data Object can transport any kind of information. For example a XML or JSON Structure with your configuration. Another way is to describe configuration elements in the Workflow Result of the Imixs-Task element: The Imixs-Workflow engine provides a micro-kernel architecture to access and process such kind of custom data. You can implement a Plug-In or an Adapter class and add configure your class as a BPMN Signal Adapter: https://www.imixs.org/doc/core/adapter-api.html At Imixs we use this adapter concept for example in our Imixs-ML Framework. In this sub-project you can describe which data of a workflow instance a ML Framework should process or train: https://github.com/imixs/imixs-ml/tree/master/imixs-ml-workflow We use this adapter technology typically to connect the workflow engine to external services within a Microserver-Architecture. The advantage is, that the Workflow Engine can not only read the BPMN configuration but also can apply data to the current state of a process instance. A single configuration param in your task may look like this:
The imixs workflow engine can now complete the sensor-endpoint with the value of the item You can find an example how to implement an Adapter class with just a few lines of code here: https://www.imixs.org/doc/core/adapter-api.html So to answer your question: Yes, what you have designed can be implemented. On the one side you have used the core bpmn-extension concept - so your model is interoperable. And with the Imixs-Workflow engine you can implement adapter classes to execute some code based on the model information. |
Beta Was this translation helpful? Give feedback.
-
Good Evening, I've been looking, at my implementation in Eclipse more carefully, and in fact I noticed that when initializing the parameters, in this new section of the Task property, there is a direct correspondence in the bpmn XML file. As Mr Ralph said, Imixs-API has a feature that makes it possible to capture this information, that is, for example, the parameter baud_rate_param is assigned the value 9600. I was reading the documentation for the Imixs project, but unfortunately I was not able to understand how the engine will be able to capture this data when executing this task. In other words, my question is as follows: -What strategy should I adopt through Imixs-API, so that it is possible on the one hand, the engine to capture these 4 data (data_type_param, baud_rate_param, time_stamp_param, temp_param) stored in the bpmn xml file. On the other hand, then , these parameters are sent for example to a server or even through port 8080? Thank you very much for your attention. José Franco |
Beta Was this translation helpful? Give feedback.
-
If you are implementing a SingnalAdapter your code would look something like this: public class MyAdapter implements SignalAdapter {
@Inject
ModelService modelService;
@Override
public ItemCollection execute(ItemCollection workitem, ItemCollection event) throws AdapterException {
try {
ItemCollection task = modelService.getModel(workitem.getModelVersion()).getTask(workitem.getTaskID());
int boudRate=task.getItemValueInteger("baud_rate_param");
.....
} catch (ModelException e1) {
//....
}
.... But I guess that you have not extended the Imixs-BPMN plugin but the Eclipse BPMN2 Plugin. So your model is propably not executeable by the Imixs-Workflow engine. But from the general approach you are on the right way. |
Beta Was this translation helpful? Give feedback.
-
Good Evening, In fact, I was adding a new property in the Eclipse BPMN2 Plugin, in order to show those menus and submenus. I was reading the documentation available at https://www.imixs.org/doc/core/adapter-api.html and the example of the MyAdapter class you sent me earlier. What I am not realizing, is how the java codes, namely the MyAdapter class, can be linked with a BPMN Event that will handle the information, from my "Device Task", so that the engine recognizes or manages to execute the information processing of my new task. In other words, my question is as follows: Imagining that the Task “New Ticket”, now has a new section of property that I invented, allowing to choose the parameters of the devices. Basically I am not able to understand where is the connection between the java codes and the "Event", in order for the Imixs Engine to react. Thank you very much for your attention. José Franco |
Beta Was this translation helpful? Give feedback.
-
For a more practical demo I recommend you to use the Imixs-Process-Manager. This project already provides you with a simple Web Interface allowing you to start an monitor process instances. The Imixs-Process-Manager can also be started with Docker. You will also find a simple demo adapter class in that project and a corresponding model. The Imixs-Workflow Engine has a BPMN Parser component parsing the content of a BPMN model when uploaded. The parser automatically detects all extensions with an 'imixs-item' and adds those items into the 'in-memory-model' for further processing. The parser ignores other elements. I fear that your are facing here two different topics. The first one is how to extend the BPMN2 Standard with custom extensions. You have shown this in your Eclipse BPMN Modeller Plugin already. Extending the BPMN2 standard with a visual modeller is a huge topic for it self. I recommend to keep things simple and use a standard way to provide your model with additional information. One way is to use a BPMN DataObject, which can be processed by the Imixs-Workflow engine out of the box. When you want to use your own Eclipse Property tabs than you need to extend the Imixs-BPMN Plugin. This is because your BPMN model need to be in the Imixs-Namespace to be accepted by the Imisx-Workflow engine. |
Beta Was this translation helpful? Give feedback.
-
Good morning, Best regards, José Franco |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
Good Evening, Absolutely agreed, a tutorial is a good way to organize ideas and so it will also be useful to me, especially since at the end of this project I am obliged to write the final document of the thesis, as well as to make a public presentation, in order to finish the course of engineering. On the other hand, the Imixs project will be mentioned in the document's references. Thanks again for your help, Best regards, José Franco |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
Good afternoon, The fundamental idea is that there are two moments: -Runtime moment: there is a device (arduino) that is monitoring the status of a sensor and sends the value read by that sensor to the Imixs Engine. Then, depending on the value of that sensor, a certain action is taken, such as , ask a task to send an instruction to the arduino to turn on a led light. -Design Time: Creation of a Device Task that allows to define device parameters, as I showed earlier, so that it is possible to automatically generate executable code on the device (arduino). This executable code will have to be sent to the Arduino prior to the Runtime. In other words, the idea at Design time, is the possibility of creating a button that allows generating a file with the parameters (Boud_Rate; Time_Stamp). On the other hand, through a transformation language such as Atlas transformation language it is possible from this data automatically create the executable code of the Arduino. This executable code is loaded on the Arduino prior to the Runtime. When pressing the button “Generate File”, the file with the defined parameters is automatically created: If the user places a Baud_rate value greater than 9600, an error message is displayed and the file is not generated: Essentially, this was the last “Update” of the project. At this point I would like to ask the following: I was reading the “Conditional Events” chapter on the following website: https://www.imixs.org/doc/modelling/howto.html On the other hand, I was trying to understand how the Imixs Engine processes “WorkItems”: I have some questions about the way the Imixs Engine, evaluates conditions and which paths are taken according to the result of the evaluation of those conditions. In the properties of the "gateway", the following conditions are verified: Depending on whether the workitem_budget is greater than or less than 100, Task 2 or 3 is performed. Given this behavior and taking into account what I read about the “Workitems” manipulation and the idea of DemoAdapter.java, I tried to force the value 1000 into the workitem _budget[0]. Then I changed the settings for the “conditional event, as shown in the next image: Again, I compiled the Engine project and ran the bpmn file on the engine and by pressing the conditional event button: I am faced with the following exception message from java: -Essentially, on the one hand, I don't know if this will be the best approach to access workitems, but I do not understand how workitem._budget [0] can be called or changed, to be evaluated at the "gateway", thus executing Task 2 or Task 3, depending on the result of the evaluation. Thank you very much for your attention. José Franco |
Beta Was this translation helpful? Give feedback.
-
What you are doing in your adapter method 'execute' is to create a complet new process instance. This will not work. You are mixing now to many things. The Execute method gives you the parameter 'document'. This is the process instance processed by the Imixs-Worklfow kernel at that moment. The process instance is where your data should be placed. You method should look like this:
Another point I stumbled upon is the part where you generate a text file out form the modeler. This should not be necessary. The value you are searching for is part of your BPMN model. And the Imixs-Workflow Rest API provides you the model data via the Model Rest Endpoint. So it is be possible to write a service that directly access the BPMN data at runtime - the way via the text file seems a little bit cumbersome, as it generates a new artefact. |
Beta Was this translation helpful? Give feedback.
-
Good Evening, In fact, the situation of creating the file so that it is possible to create the Arduino code, is a little complicated. Next, I will carefully study the REST Service module. In other words: On the DemoAdapter.java function side, first, I get the value 180 and convert that value from String to an integer. I print this value through “System.out.println (" server: "+ str)” and lastly through “document.setItemValue (" _ budget ", value_received);”, I changed the value of the workitem to be evaluated at the gateway : In this specific case, if I execute the bpmn file on the engine, and after pressing the “conditional event” button: The gateway redirects to task 2, as expected, since the value of the workitem is greater than 100: Right now I'm trying to understand the following: I changed the original bpmn, as shown in the next image: My question, taking into account the previous image, is the following: During the execution of this bpmn, upon reaching Task 2, how can a Workitem be created (in the execution of Task 2), so that exclusive gateway 2 can evaluate it, without having to press a “conditional event” button ”(as in the previous example). In other words: Thus, it is possible to avoid the user's step by pressing the "conditional event" button, to proceed with the evaluation at the gateway. Thank you very much again for your attention. José Franco |
Beta Was this translation helpful? Give feedback.
-
Good Evening, I replaced Task 2 with the simple Event (NEW_EVENT, without DemoAdapter), as shown in the next image: And in fact, when executing the “conditional event” (which through DemoAdapter.java, assigns values to be evaluated on Gateways), I notice that it is not necessary to press the NEW_EVENT button on the Imixs Engine. Meanwhile, I added a feature that allows DemoAdapter.java (through the “Conditional Event”) to wait for a number to arrive from Server.java. This number is then assigned to the Workitem to be evaluated by the gateways. Specifically, I did the following: On the side of DemoAdapter.java, I implemented a mechanism that ensures that as long as the value has not been sent or is not greater than 100, the Imixs Engine is “listening” (getting blocked).Otherwise, it follows in the assessment of this value by the Gateways: For example, if I do not run server.java or if the value sent is less than 100, in this case it is 50, the following is verified: The engine is “blocked”, waiting for some value to be sent, as nothing has been sent yet, it is waiting as supposed. On the other hand, the Engine behaves in the same way, if the value is less than 100: Then if I send the value 195, for example, I notice that the engine automatically moves from Task 1 to Task 7: If I send the value 1000, then it goes to Task 6 as drawn in the eclipse bpmn modeller: With this I intend to test a way for the engine to automatically receive information, via sockets and go on to a task or another according to the evaluation on the Gateways. Even so, in view of what is now implemented, at the beginning it is always necessary to press the “Conditional Event” button, to start the verification cycle within the DemoAdapter.java function. Essentially, what is verified to be executing automatically, specifically, in this case, is in fact what is indicated below (it is the follow-up event that you indicated): My idea to avoid pressing buttons on the Engine, while executing the bpmn file, is to try to understand how I could implement the following: In other words: My concern in avoiding the procedure of manually pressing an “Event” button on the Imixs Engine, would be in order to try to automate the triggering of events that allow to execute certain actions. In the case of the previous example, it would automatically turn on an LED light. Essentially it removed the “human intervention” from pressing the Event button on the Engine. Taking into account what I presented earlier and the information you gave me in your last answer, I would like to ask the following: -Considering the next image, the “Conditional Event” event that is calling the DemoAdapter.java function, can it be triggered automatically through a message sent through the Imixs REST API platform? Thank you very much again for your attention. José Franco |
Beta Was this translation helpful? Give feedback.
-
I guess that the tool curl is not available in your docker container. package org.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.logging.Logger;
import org.junit.Assert;
import org.junit.Test;
/**
* Junit test get request
*
* @author rsoika
*
*/
public class TestUbidots {
private static Logger logger = Logger.getLogger(TestUbidots.class.getName());
/**
* send a json test request
*
*/
@Test
public void testGET() {
URL url;
try {
url = new URL("https://industrial.api.ubidots.com/api/v1.6/devices/control/recebe");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("X-Auth-Token", "BBFF-NQCr32C9YwM1E4DVnbTSWGAzwoLsE8");
con.setRequestMethod("GET");
int status = con.getResponseCode();
logger.info("getResponseCode=" + status);
// read result
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer content = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
content.append(inputLine);
}
in.close();
logger.info("Response=" + content);
// extract value
if (content.indexOf("last_value") > -1) {
String valueList = content.substring(content.indexOf("last_value") + 12).trim();
String[] values = valueList.split(",");
for (String singleValue : values) {
logger.info(singleValue);
}
}
Assert.assertTrue(true);
} catch (IOException e) {
e.printStackTrace();
Assert.fail();
}
}
} |
Beta Was this translation helpful? Give feedback.
-
Good afternoon, Firstly, I faced some difficulties related to the org.Junit.Assert and Test libraries, because when compiling with “mvn clean install -Pdocker”, I kept receiving some errors until I realized that I should add these libraries in the dependencies from the POM.xml file. At this moment, with this situation solved, I can already receive information in the IMIXS Engine for variables that have values stored on the Ubidots platform side. First I created the following bpmn for testing: The idea is that the "conditional event" points to the DemoAdapter.java that contains the code you sent me, correctly fetching the information from the "Recebe" variable (which has the value 380): By triggering this event, it is possible to verify that in fact the Imixs Engine is receiving the value 380, in the Imixs Engine logs: Then, when triggering the Event "Send_To_Ubidots_Up", which is pointing to the function "SendAdapter.java" where the POST code is defined: `
} ` I verify that on the Ubidots side, the variable "Imixs_var" correctly receives the test value "321": At this time, it is possible to carry out communications between the Imixs Engine<->Ubidots and between Ubidots<->Arduino I will now do some more tests, with other sensors and actuators, in order to make a more real example. And on the other hand, I will try to use async events in order to continuously monitor the values in real time. Thank you very much for your help and attention! Best regards, José Franco |
Beta Was this translation helpful? Give feedback.
-
Good Evening, I was reviewing Asynchronous Events, in order to try to understand, how I could make a mechanism that could be continuously triggering imixs-adapter, which is going to collect values from Ubidots. I was trying to understand how I could add this "behavior" to the “imixs-workflow-core” project, in the src/resources/bpmn folder, where “asyncEventSimple.bpmn” file is available: Essentially, I've been modifying the properties of Boundary_Event1, having changed the "Event Type" to "Signal Event" (similar to what I had previously done for simple events): However when I load the file into the Imixs Engine and run bpmn, I don't see any attempt by the Imixs Engine to run the DemoAdapter.java function: If I press on event 1, it goes directly to the next task. Not running DemoAdapter.java -In other words, I think I'm doing the procedure wrong here, I'd like to ask how I should proceed, in order to continuously call the DemoAdapter.java function, so that I can get the values from the Ubidots platform continuously or automatically. Thank you very much for your attention. José Franco |
Beta Was this translation helpful? Give feedback.
-
You can not start in that way. First you need to initialize a process instance: In this case I can start a new process instance with the event 'init'. The process instance is waiting in the task 8280. Now you can model an async event which will be triggered by the workflow engine with the defined delay. |
Beta Was this translation helpful? Give feedback.
-
Good morning, I installed the "Init" event at the beginning of bpmn: In step 2, I defined a 1 minute delay in the following settings in Boundary Event: On the other hand, regarding the Event-1 event in the "Workflow" section I also defined 1 minute: Finally, still in the Event 1 settings, in the "Timer" section, I also defined 1 minute: I uploaded this bpmn file to Imixs-Engine and pressed the "Init" event: However after 1 minute the DemoAdapter function (from the event-1) is not called, in other words, the automatic mechanism is not triggered, to capture the information from Ubidots. Essentially when consulting the Imixs-Engine logs, I verify the following: The message appears saying it is processing the instance, but even after 1 minute or more it never triggers event 1 automatically. I still think I'm doing something wrong here, but I don't understand where. Thank you very much for your attention. José Franco |
Beta Was this translation helpful? Give feedback.
-
I wonder a little about the architecture approach. Frankly, it seems unnecessarily complicated to me. What I understand is:
Arduino is able to send data in XML format. Imixs-Worklfow is an event driven workflow engine, able to react on XML Data. Connecting Arduino with Imixs seems to me as a straight forward solution. But now you take Ubidots into the play. Ubidots is a platform collecting, aggregating and validating data to store the data or to generate events (e.g. alterting). This is similar to Imixs-Workflow Instead of sending the device data to the Imixs-Workflow engine (for collecting, aggregating, validating and alerting) you send the data to Ubidots (for collecting, aggregating, validating and alerting). Ubidots itself has a Rest Interface. To get the data out of Ubidots you implemented an Adapter in Imixs. With an Async Event approach you try to poll the Ubidots data periodically - again for collecting, aggregating, validating and alerting? Of course I have not the complete picture but I wonder why the architecture need to be so complex? Super Simple Approach:
There is no need to poll the data manually. Such an asynchronous approach is in its core always more complicated and error-prone. Like I said, I don't have the complete picture - so maybe I do not see the requirements behind. But maybe it's worth thinking about how to trigger an event in Imxis-Workflow directly from Arduino? |
Beta Was this translation helpful? Give feedback.
-
Good morning, In fact the Ubidots platform does not add any extra functionality to the project and even adds some "confusion". I apologize for not clarifying you before, but essentially what is going on, on the Arduino side is that I have been faced with some difficulty in dealing with the libraries that deal with the POST mechanism and unfortunately, so far, I haven't figured out how to upload correctly an XML description by POST. From what I understand, most Arduino users have a wifi chip called ESP8266 which is separately mounted on an Arduino Uno. However, in order to simplify the electronics mounting, I purchased the Arduino Uno wifi rev .2 which has a chip already built into the board called u-blox NINA-W102. The problem with this situation is that the wifi libraries of this chip are more difficult to handle in the POST and GET mechanism compared to ESP8266. I questioned my thesis advisor about this problem, who referred me to the Ubidots platform to facilitate the resolution of this issue. However, it adds "difficulty" in the interaction with Imixs Engine. In the next few days, I will try to find out if there is any way to solve this situation, in order to directly connect the Arduino to the Imixs Engine. On the other hand, as the esp8266 chip is even cheap, I will order it, to see if at least next week I already have it. Thank you very much again for your attention. José Franco |
Beta Was this translation helpful? Give feedback.
-
Good afternoon, I was trying to create an Arduino code that could link directly to the Imixs Engine and I found a way that apparently it can link. I know that this situation that I'm going to report to you goes beyond the Imixs project, however, I'm dealing with a response from the Imixs Engine to the XML request that is causing me some confusion. The raw code of the Arduino program is as follows:
The Curl command that is possible to interact directly with the Imixs Engine that I used here a few weeks ago and it works is as follows:
After having fixed some issues with Arduino Libraries, I tried to replicate the same Curl command mechanism in Arduino code. Taking into account the Arduino raw code inside the Loop() loop, I did the following:
First I put the XML description inside the postData string. Then, with beginRequest I provided the workitem path -Unfortunately when I run the program on Arduino I am confronted with the following error that comes from the Imixs Engine:
(I don't know why the github text editor is not displaying the xml description correctly, so the arduino code is attached to the Thread) -Essentially I am unsure about the root cause of this problem. Thank you very much for your attention. José Franco |
Beta Was this translation helpful? Give feedback.
-
You have the following line in your code:
But this did not look correctly to me. The xml ends within the item with the name '_budget' suddenly. So this is no correct xml. The correct code line should look like this:
Maybe this was a copy/paste error? The error message 'premature end of file' from the Unmarshaller tells exactly this. The XML Stream ends suddenly an can for that reason not be parsed. |
Beta Was this translation helpful? Give feedback.
-
Good morning, I've been reviewing the Arduino code, more carefully and found out right now, the root of the problem: It is necessary to include in the Headers the following line of code:
This latest version of the Arduino code is attached to the Thread. Essentially what is happening now is that every 5 seconds I send the XML message to the Imixs Engine, waking it up, as can be seen from the image below: So it is proven that it is in fact possible to directly connect the Arduino to the Imixs Engine. Thank you very much again for your attention. José Franco |
Beta Was this translation helpful? Give feedback.
-
Good afternoon, In the last few days I've been trying to find a mechanism for Arduino to successfully receive messages directly from the Imixs Engine and I already have that working too. So I don't really need the Ubidots platform at all, simplifying the project. Regarding what you told me about Async events a few days ago, I still have some questions regarding the functioning of Async Events. Essentially what I'd like to implement, not knowing if it's really possible is the following (a generic example, not taking Arduino into account): A bpmn project, in which once arriving at a Task, this Task becomes "static", "counting" 10 seconds until it manages to trigger an event automatically, without human intervention. So having the following previous example: The event is pointing to a function called HelloAdapter.java that basically prints a simple message: On the other hand, in boundary event settings, I set 10000ms, so that this event will be fired automatically after 10 seconds: What is happening is the following: I uploaded this bpmn in the imixs Engine and then pressed the Init button, in order to start the process: I wait 10 seconds, however the event never gets fired: Unless I manually press the event: -Essentially, I would like to know if I am proceeding wrongly or if there is any extra procedure. Thank you very much for your attention. José Franco |
Beta Was this translation helpful? Give feedback.
-
Thank you very much, it worked! At this moment it is already possible to automatically trigger the event (in this case the message), after 10 seconds. I'm going to clean up the arduino code here in order to create a practical example with a sensor and an actuator, which will be looped with the imixs Engine, automatically triggering conditions. Thank you very much again for your attention. José Franco |
Beta Was this translation helpful? Give feedback.
-
Hi José, |
Beta Was this translation helpful? Give feedback.
-
Good morning, I'm fine thank you, I hope everything is fine with you too. One important topic of my thesis is to understand how can be possible integrate in "Device Task" the possibility of automatic code generation,this is the "Design Time".For instance the ideia behind is the following: When an user fills some Parameters in Plugin Menu Task that i've already implemented ,he can press the button "generate file" to create arduino executable code: I'm trying to do it with Atlas Transformation Language. The concept is taking in account the metamodels of bpmn and arduino to relate common information to create the arduino code. Essentialy I have been studying Atlas Transformation Language in last 30 days,because it's a new paradigm for me at least,since it's completely different from classical languages such C,C++,Java.In other hand, I'm trying to understand what are the main requirements to do this "Transformation", e.g, in Arduino code we allways have "Void Setup()" and "void loop()", this two components are important to be there. I've been watching your new project and thank you for the integration of the IoT paradigm in your workflow. In fact as you stated: In fact I choose the Arduino because is the most simple microcontroller,because if we take into account for example pic24 and others, the programming complicates a lot.For example in aduino we are not concerned with ADC configuration at registers level, thats why i started with arduino. When I've finished the project, I'll write a tutorial here on Imixs and if you want you can integrate it into your workflow. Thank you for your attention, Best Regards, José Franco |
Beta Was this translation helpful? Give feedback.
-
Hi, |
Beta Was this translation helpful? Give feedback.
-
Good morning, my name is José and I'm a student of electrical engineering and currently I'm doing my master's thesis.
Over the past month, I have been reviewing your project, reading your tutorials and github projects and I thank you for making it available because it allows me to deepen my knowledge in bpmn.
The objective of my master's thesis is the development of a bpmn task, that allows defining parameters that can be used to program a device, for example an Arduino. In other words, a procedure that allows you to insert in the bpmn task itself, some parameters that can be used to program an Arduino. This task would be called: “Device Task”. Then, when loading the bpmn file in an engine, at the time of executing this "Device Task", those parameters that were previously defined, are sent to a server that would forward the executable code to Arduino.
In summary my idea would be what is in this scheme below:
I was reading your article about “Custum Tasks” that you put on your blog:
https://ralph.blog.imixs.com/2015/02/27/extending-eclipse-bpmn2-plugin-part-1/
Your article gave me some ideas on how to create submenus in task properties and then through Imixs-BPMN, in Eclipse, I created a “Custum Task” with a sub menu where you can define these parameters.
Through the following very simple BPMN:
In the properties of the Task, I was able to create a new property section called "Devices", where it will be possible to define the device parameters, as follows:
Now, in light of what I explained earlier and as Mr. Ralph, you have a more global view of the entire imixs project and a more solid knowledge,I hereby ask the following:
-Can my idea be implemented in the imixs engine, allowing a bpmn "Device Task" to be executed so that, the parameters defined in the task, can be communicated with an arduino through a server?
Is this possible, taking into account all the primitives and implementations of imixs project ?
Thank you very much for your attention, best regards,
José Franco
Beta Was this translation helpful? Give feedback.
All reactions