I have some issues with EasyMorph Server. I use it for populate a Datawarehouse daily.
I have approximately 90 EasyMorph project, that i have grouped in 4 main project (divided by the area of the company) that calls these 90 single projects with the action ‘Call another project’, set on capture error and continue.
Next i scheduled the 4 main projects.
Each of the 90 projects have an action at the end that writes a line in a table that i use for logging, writing the name of the table and the timestamp.
Sometimes, some project don’t works. I find tables of the datawarehouse empty or partially empty and the table of the log without some rows, wich means that some project has not gone until the end.
But, on EasyMorph Server the task journal dont report any error. All of results are “Success”. But, all the projects are setted on “capture errors and continue”, so the task should report this.
Is there a way to do that?
Hmm, it’s hard to say what went wrong. What version of EasyMorph Server are you using?
Could it be that several projects try to write into the same log file simultaneously? If yes, try using different log files, or use the “Synchronize” action to avoid potential file write conflicts.
Also, to help debug the issue, make Server tasks from some of the non-main projects and use the “EasyMorph Server Command” action with the “Trigger task” command to run these tasks instead of using the “Call” action. The “Trigger task” command also can capture errors, but in this case, every task run (and failure) will be recorded in the Server journal (available since version 5.0). That would help verify whether they finished successfully or not.
I use EasyMorph Server Version 18.104.22.168.
I converted my main project from “call another project” to “EasyMorph Server command” with “Trigger Task” and added all my .morph project as task in EM Server. All works fine, but if someone of the project goes into error, blocks al other subsequent tasks. Is there a way to emulate the “Capture error and continue” option of the “Call another project” action?
I need it because every project updates a table in a database, but if some remain out of date due to an error it is not a problem, but the others that do not go into error must be able to be updated.
I’ve read about the option “Don’t wait for completion, ignore task errors”, but i want to run my project in series, not parallel, and this option tries to run tasks in parallel
Next week we will be releasing a new version - 5.3.1. In that version, the “Trigger task” command can accept a parameter to specify the ID of the task to run.
So you will be able to create a module with one parameter (Task ID) and one action “EasyMorph Server command” with the “Trigger task” command.
In addition, the “EasyMorph Server command” will have a new command “List tasks”.
Therefore, in your workflow, instead of triggering tasks directly one by one, you can produce a list of task IDs, and then iterate the module and pass task IDs to that module. The “Iterate” action has the mode “Collect errors” and continues, so even if one task fails, the iteration will keep going.
Alternatively, you can put in the module the “Run program” action that runs the “ems-cmd” utility to trigger tasks, specified by a parameter, from the command line. The action has the “Capture output” mode to collect errors and not fail. It’s more cumbersome but can also work.
Version 5.3.1 was released yesterday.
Today I’m gonna update the server and desktop version and i’m gonna try your suggestions. Thank you very much