Hi, first of all, I'm wondering if your approach is really a good one. Wouldn't it be easier/more sensible if the agent either ignores further messages after the first one or return an error to the TestV3EnvironmentActionAgent1? If the service is removed, it may be difficult for the TestV3EnvironmentActionAgent1 to determine if the call did not succeed because the service was intentionally removed or e.g. connectivity was lost. Regardless, in the code you provided: IServiceIdentifier sid3 = ((IService)agent.getProvidedService(INotifyService1.class)).getServiceId();...
Hi! Sure, you can dynamically add and remove services at any time in the respective agent, e.g. inject internal access first: @Agent protected IInternalAccess agent; Then use one of the addService() or removeService() methods anywhere in the agent (instead of @ProvidedService): agent.addService("chatservices", new ChatServiceF1()); This also automatically updates the service registry infrastructure as needed in the background. However, given your description, I suspect there could be better solutions....
Hi Kevin, sorry I was only able to have a cursory look at your sourced but apparently you are using the getAvatars()-Method to check if the avatar was created. Generally there are two ways how the environment auto-creates avatars: The environment notices the new component or the component accesses its avatar through the getAvatar() (singular, not getAvatars()) method. The environment ensures there is only one avatar created. There is a bit of asynchronous behavior between the environment and agent...
Hi, your assumption is correct, in fact, this is the default so it ought to work: https://github.com/actoron/jadex/blob/96079a9f50f08f256bf22b136c70b12bb10eda6e/docs/guides/env/04%20Component%20Interaction.md Could you please provide a minimal example project so we can look into it? Kai
Yes, this is an alternative way which adds task during initialization. Unfortunately, I do not think we have an example of this, but basically you can add tasks to <env:object></env:object> in the <configuration></configuration> section by including lines like <env:task type="move_train"></env:task>. In general, be aware that EnvSupport is an older part of the Jadex codebase, hence the quirky API. If this does not bother you, you are, of course, free to use it. Edit: The .application.xml has an XML-Schema,...
Yes, this is an alternative way which adds task during initialization. Unfortunately, I do not think we have an example of this, but basically you can add tasks to <env:object></env:object> in the <configuration></configuration> section by including lines like <env:task type="move_train"></env:task>. In general, be aware that EnvSupport is an older part of the Jadex codebase, hence the quirky API. If this does not bother you, you are, of course, free to use it. Kai
Hi, your application.xml, which only defines the task type. The avatar/object has to actually instantiate the task using the IEnvironmentSpace.createObjectTask() method for the give space object (identified by objectid). Kai
Hi Kevin, thank you for trying Jadex. We are currently in a bit of a transition, so things may appear a bit confusing. Yes, our download page currently show version 3 of Jadex as the current one, however, we often recommend version 4 of Jadex, with the biggest remaining item being updated documentation for version 4. Version 3 is, unfortunately, not compatible with Java 11, however, version 4 should be working. Could you please elaborate on the problem you had using the combination of Jadex 4 and...
Hi, the way the scheduling works is as follows: Whenever a step is schedule (whether by scheduleStep or waitFor[Delay]), it gets added to a queue and executed in order of addition. Steps that are prevented from executing (e.g. having a delay) are only executed when they become due, but secondarily also preserve order of addition (so two waitForDelay() steps with exact the same delay should be executed in order of addition after the delay has passed. However, please note, mostly due to limitations...
Sure, this is possible, you would have to disable all transports: rootconfig.setRelayTransport(false); rootconfig.setNioTcpTransport(false); rootconfig.setTcpTransport(false); rootconfig.setSslTcpTransport(false); This will isolate the platform and it will then be unable to communicate with any other platform. Kai
Sure, this is possible, you would have to disable all transports: rootconfig.setRelayTransport(false); rootconfig.setNioTcpTransport(false); rootconfig.setTcpTransport(false); rootconfig.setSslTcpTransport(false); This will isolate the platform and it will then be unable to communicate with any other platforms. Kai
Hi Steve, in addition to disabling the Awareness (at least relay awareness), you also have to disable inter-platform communication via relays: rootconfig.setRelayTransport(false); Note that this will restrict the platforms to communicate only via direct connection (e.g. TCP connections), which may be an issue if there are firewalls,NAT routers etc. Kai
Hi, it appears like the Grizzly-based REST publishing in the current version has a bug that triggers the problem you've mentioned. We will into this. As a workaround, you can try using the Jetty-based publishing. Also, it is important to include all of the following artifacts for publishing to work: 'org.activecomponents.jadex:jadex-platform-extension-webservice:3.0.95' 'org.activecomponents.jadex:jadex-platform-extension-webservice-desktop:3.0.95' 'org.activecomponents.jadex:jadex-platform-extension-webservice-desktop-jetty:3.0.95'...
Hi, you don't have to deal with Grizzly directly, so "GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI)" etc. should be unnecessary. However, in your code snippet it says //config.setRsPublish(true); but it is commented out. Could you try again with that line being enabled? With kind regards Kai
Hi jobi, Declared required service (@RequireService) are not the only way to find services, you can also acquire them programmatically / dynamically using the SServiceProvider class, which contain a number of static methods to use (there are plans to move the functionality up into the required service feature in version 4). Using SServiceProvider has the disadvantage of somewhat obscuring component dependencies, but it can be useful such as in your case. In particular, you should have a look at this...
Hi jobi, Declared required service (@RequireService) are not the only way to find services, you can also acquire them programmatically / dynamically using the SServiceProvider class, which contain a number of static methods to use (there are plans to move the functionality up into the required service feature in version 4). Using SServiceProvider has the disadvantage of somewhat obscuring component dependencies, but it can be useful such as in your case. In particular, you should have a look at this...
Hi Vinodh, we have found a solution for you. The problem is a classloader problem related to the following Spring Boot issue: https://github.com/spring-projects/spring-boot/issues/3316 The solution (based on your example) is as follows: Create a directory "META-INF" in src/main/resources. Add a file called "spring-devtools.properties" to that directory. Add the line "restart.include.jadexlibs=/jadex-.+.jar" to that file. This will force Spring Boot to include the Jadex .jar-files in the RestartClassLoader...
Hi jobi23, it should work as you expect it to work: Service A provided with platform scope on platform X should not be found by a global search from platform Y. Of course, if you do a global seach on on the same platform as the platform-scope provided service, it will be found. Could you provide us with a test case? If this does not work, it might be a bug. Regarding version 3.1: We do not expect significant changes on the API level / semantics, only the underlying communication layer. In practice...
Hi Sandra, once you got the OS and Java VM running on the Pi, there is nothing special about the Java on the Pi, it's just a Java VM (unlike Android), so you would export .jar file as you would for any other system. Just be sure that you include all your dependencies in the .jar file you export. Kai
Hi Sandra, my help will probably be a bit limit since I only tried it once when the...
Jadex supports both messaging and service calls as forms of communication between...
Hi Hannes, "Synchronous signatures" are any (service) method signature that does...
Hi, if you want to implement a BDI agent (as opposed to a micro agent) your class...
Hi Mahmud, we actually do have a tool that does exactly what you describe called...
Hi Mahmud, as mentioned by Julian, the software is currently a bit ahead of the documentation,...
Hi, thanks for telling us, I'm surprised it worked at all since there was no explicit...
A "shared" belief would be a violation of the autonomy-property of (not just BDI-)...
Hi Felix, your example code does indeed block, but it blocks on hasNextIntermediateResult()...
Hi Hannes, I just remembered what the reason is, most likely. I was focused on the...
Hi, good catch, I've also checked the later enhancements of the codec chains since...
Hi, one issue might be that we are currently using two different versions of the...
Hi, one issue might be that we are currently using two different versions of the...
Hi, you've already found the right place, you have to write your own codec, which...
Hi Hannes, Jadex supports multiple approaches for serialization, the default being...
Hi Hannes, Jadex supports multiple approaches for serialization, the default being...
Hi, you can adjust the clock type programmatically by requesting the ISimulationService...
Hi, you also have to be sure to remove the files from the Eclipse Build Path (right-click...
Hi, your error seems to indicate that there was a problem initializing the OpenGL...
Hi, your error seems to indicate that there was a problem initializing the OpenGL...
Hi, your error seems to indicate that there was a problem initializing the OpenGL...
Hi Bill, as Lars mentioned, GPMN has currently fallen behind in terms of maintenance....
Hi, thank you for trying and liking Jadex Active Components. Regarding your question,...
Hello Claas, if you occasionally need to exclude the remote services, you can also...
Within the agent, you can simply have Jadex inject the access for you by declaring...
Hi, apparently you triggered some automatic spam filter. I have approved your post....
Hi, I'm somewhat unfamiliar with the Grid2D mode, but I will try to give you a partial...
Hi, Jadex uses the XML format as defined as part of the BPMN 2.0 standard, see: http://www.omg.org/spec/BPMN/2.0/...
You're almost correct, it is the "same" annotation, but with different semantics...
You can find a more current build (80/41) here: http://www3.activecomponents.org/download/...
Hello, since parameters are passed as objects, you will have to use the wrapped types...
Hmmm, it should be there at least in newer builds. Can you check under Help->About...
In order to have the editor find the class, you must add packages to the classpath,...
Hello, yes, sorry, I took the opportunity to overhaul the autocompletion and it should...
Yes, the annotation-based approach is new and in the nightly builds.
Yes, this appears to be a bug related to the autocompletion being used in a table....
You can find the ITaskContext in jadex.bpmn.model.task.ITaskContext in the jadex-model-bpmn...
Hello, here, you have two options: The jadex.bpmn.runtime.task.WriteParameterTask...
Hello again, yes, this is a known bug in older builds of the editor which has been...
Also, regarding adding parameters for tasks: If the task class is set and well-defined,...
With the new editor, we changed the way data values are passed, we are no longer...
Also please note that the new BPMN editor is still under heavy development. While...
Unfortunately, the documentation is currently woefully outdated, so a lot of information...
It's been a while since I worked on this code, so I took a look: Your XML seems to...
While I'm not intimately with the jMonkey-Subsystem of EnvSupport, here is a somewhat...