Queue of workflows' launchers - aem

I am working on AEM6, but this problem is also applicable to previous version of the platform.
I have noticed that default workflows "DAM Update Asset" and "DAM Parse Word Documents" are started by launchers /etc/workflow/launcher/config/update_asset_create and /etc/workflow/launcher/config/parse_word_docx_create. These workflows are always started in the same order (parse word docx is started after update asset create). I wanted to implement similar functionality, so I created my own workflow with one process and then created launcher very similar to docx parser launcher.
The problem is that my launcher starts before default DAM Update Asset workflow. Is there any way to set an order of the launchers?

I would suggest trying to avoid depending on this behavior. Instead, why not invoke your processes as part of the DAM Update Asset workflow?

You Can use the Process Step inside one workflow, and on the basis of completion of one task you can invoke other workflow from inside it. Please Refer this Answer : CQ5 Programmatically Run a Workflow .
Thanks

Related

How to write multiple feature file and step definition file into Calabash project directory?

To write multiple feature files(.feature) and respective step definition(.rb) files for my current Calabash project directory. Here, My doubt is that
a. Do I need to create feature file manually by using text editor after default single feature file creation based on calabash cmd 'calabash-android gen'?
b. Should I use my IDE to add multiple feature file and step definition files into Project skeleton?(I'm using Visual Studio Code IDE)
a. For your first feature you can reuse the file that is created if you want to. After that you should create a new file for each feature you want to test.
When you execute the tests you will often only execute 1 feature test at a time while developing and perhaps only from a certain line number. So having the tests split in multiple fetaures works well.
You have probably read it but if not please take a look at the Github page.
b. You can create the files any way you want to. I normally copy an existing feature file through IDE and clean it. Personally I find JetBrains Rubymine to be a really good IDE for working with Calabash.

Process files crash unexpectedly

I am working on a project in Drools6. I have defined a few custom tasks using workitemhandler. When I create a new process file(*.bpmn file) and model it by adding my custom tasks and other inbuilt blocks, everything works fine in the beginning. But, if the complexity of the .bpmn flow diagram increase i.e, I add about 4-5 custom tasks, create sub-processes, add a few gateways etc, the program crashes and I will not be able to open my flow diagram again. It says there is a parse error.
I have tried reinstalling eclipse, but it still gives me the same error. I have not used exception handling in the java class of my custom tasks. Could this be why my program is crashing.
please guys, if anyone has come across a similar issue, let me know how you resolved it.
Thank you
it seems that for some reason your business process is corrupted and it cannot be opened by the editor. Do you have a previous version of your process? Try opening another process.
You can also try the web designer, which is usually more powerful than the eclipse one.
Regards

CQ5: disable an ObservationListener during package upload

I have an ObservationListener that does a few things when an author adds/deletes components from a parsys in /content. The problem I'm running into is that the same events I'm listening to, fire whenever a package is installed (and that can get costly). I would like a way to either edit the package manager workflow to disable my service, install the package, then renable the service when the package is finished, or differentiate a package install from a node being edited and ignore them in my listener.
Alternatively, I'm curious if there is an import/install queue of some sort that I could watch so --- if my event is fired and the queue is full/still has items to install, wait until the queue is empty, then continue on with my event handling.
thank you
I don't think Sling or CQ provide events to let you know when things are about to be installed.
If it's JCR events that you are listening to, you might use Event.getUserID() to find out who's changing content and differentiate between admin (or whichever user is used to install content packages) and regular users. But note that if you later switch to an Oak-based content repository there are some limitations with this, see http://jackrabbit.apache.org/oak/docs/differences.html

CQ Workflow, purpose of "Handler Advance"?

I am working with some custom WorkflowProcess classes in Adobe CQ 5.4
When I configure the workflow step as part of my workflow model, there is an checkbox entitled "Handler Advance, Check if your handler will advance to the next step"
My Java classes do in fact progress the workflow (and sometimes terminate the workflow).
i.e.
workflowSession.complete(workItem, routes.get(0));
workflowSession.terminateWorkflow(workItem.getWorkflow());
Given that this custom WorkflowProcess performs these operations, I think that I should be checking the "Handler Advance" option.
I was hoping for a better explanation on this option.
Thanks!
The handler advance option when true (checked), will advance the workflow to the next step after the current process is done with its execution.
In case the handler advance option is false (unchecked), the process script has to take care of advancing the workflow to the next step. In case the script doesn't handle this, the workflow would remain in the running state without proceeding further from the current step.
Since your custom workflow process progresses the workflow to the next step, it doesn't make any difference having the handler advanced option checked or unchecked.

Eclipse Plugin development: How do you prevent another job from running

Greetings all.
I have 2 actions: "Find" and "Run". They can be invoked in 3 ways: Find only; Run only; and Find and Run.
I want to put both actions in Jobs.
For the case of "Find and Run", what is the best way in Eclipse to have the "Run" job wait for the "Find" job to complete. Importantly, the "Run" job depends on the results from the Find job.
As I understand it, I could use a lock, or I could use a rule, though the docs indicate that a single rule is the same thing as a lock.
I know I can accomplish this by adding a post-run event onto the Find job which would then invoke the Run job, but I think the platform provides an preferred mechanism for the behavior I need and I wish to use that... just not sure what that mechanism is.
Thanks for advice
Found this in the Eclipse FAQ.
http://wiki.eclipse.org/FAQ_How_do_I_prevent_two_jobs_from_running_at_the_same_time%3F
I'm assuming since it's the answer given in the FAQ that it is, indeed, the best way to solve this problem