| | | Supreme Being
       
Group: Forum Members Last Login: Wednesday, March 05, 2008 Posts: 80, Visits: 277 |
| Hi there,
I was wondering if there is any chance to repeat/rollback activities in skelta.
For example, I have several workflows with more than 40/50 activities, and it takes a lot of time to test it because whenever I get an error, I have to start everything allover again.
Is there any possibility to go back and undo for example the last few activities?
What's the best practice in these situations?
Thanks in advance for your time and help.
Best regards,
Rui
|
| | | | Supreme Being
       
Group: Forum Members Last Login: Thursday, December 27, 2007 Posts: 11, Visits: 11 |
| | You can use AlertAction API for this which is part of Client object, public void AlertAction( int ExecutionDetailsID, string Output, Interfaces.ActionResult Result )In this you need to pass the executionDetailsId of the activity which has been already executed, and the output path you want to traverse from that point and give ActionResult same as the status for that executionDetailsId. Basically what it will do is start the workflow thread again from that point in the workflow. However one more thing might be needed here to do rollback which would be to stop the current running thread in the workflow. For this the workflow can be first Killed and the above API can be used to restart it from specific point. If you are just looking at API for resuming a workflow finished with error. You can use ResumeWorkflowWithError API. So with combination of some of these APIs you should be able to address major scenarios you have spoken about out here.
Arvind Agarwal (Skelta) |
| | | | Forum Newbie
       
Group: Forum Members Last Login: Friday, April 18, 2008 Posts: 3, Visits: 5 |
| | Apart from using the API's we can also use the BAM Control Execution View to resume workflows which are finished with errors |
| | | | Forum Newbie
       
Group: Forum Members Last Login: Friday, April 18, 2008 Posts: 3, Visits: 5 |
| | How to resume workflows finished with errors using BAM Control 1. Browse the BAM Control. 2. Scroll down to locate "Failed" in BAM Dash board. 3. Double click on the item [We can find this out by execution ID]. 4. This will open anoter window with Process View, Execution View and Analyst View. 5. In Process View tab, on top left hand corner you will find a button which will be active. 6. Click on the same to resume. |
| | | | Supreme Being
       
Group: Forum Members Last Login: Wednesday, March 05, 2008 Posts: 80, Visits: 277 |
| | | | | Supreme Being
       
Group: Forum Members Last Login: Wednesday, March 05, 2008 Posts: 80, Visits: 277 |
| Hi once again,
I was having this exception thrown whenever I tried to "repeat" my alert.
"Could not connect to the workflow engine at server:port. Will retry connecting".
I increased the "Thread Pool Size", in order to have multiple instances and it seems to have done the trick.
Was this the correct thing to do? The exception wasn't very clear.
Will this affect my performance?
EDIT: Also, I haven't been able to resume an aborted/killed workflow. It shows the same error described before. I notice this error happens a lot in this kind of actions, any clue of what might be? I also get this error (sometimes) while trying to resume a workflow:
! - Error Occured While Handling Workflow Engine Notification, - Object referenc e not set to an instance of an object., Module - C:\WINDOWS\TEMP\Skelta2007Temp\ ShadowTempSNITURHFormsRepository\assembly\dl3\f77f43fa\00a8c3c2_dc0cc801\WFEngin e.NET2.EXE, Source - at Workflow.NET.Engine.RunTime.x1394c57b15b65d16(x9c0a6b 495f838e9f x9b491e9c1b1735a3, Int32 x0dee3720b2f3c23e, Int32 xf4010f4fdd2cd153, String x0c9084b393c1fae4, Boolean x01de7dbce4038be4, ClientData xf0f6ada80edb9ad d, Int32 x99bbe3a0831cff64) at Workflow.NET.Engine.RunTime.x2182a1b884a1a3cb(x9c0a6b495f838e9f x9b491e9c1 b1735a3, Int32 xdc95310c1bfa6e40, Int32 x34fb5032dc600578, Int32 xbcdc6af256502e 68, String x9c13656d94fc62d0, ActionResult x42cb3d4678becebe, Boolean xad51be5f7 2eb1c96, ClientData xf0f6ada80edb9add) at Workflow.NET.Engine.RunTime.x0de9bd26491cba6f(x9c0a6b495f838e9f x9b491e9c1 b1735a3) at Workflow.NET.Engine.RunTime.xef3282115829f96a(Int32 xed4afbd4f36515f8) at Workflow.NET.Engine.RunTime.RegisterAlert(Int32 executionId, x9c0a6b495f83 8e9f actionExecutionTracker) at Workflow.NET.Engine.RunTime.AlertActionSynchronous(Guid eventTrackId, Int3 2 ExecutionDetailsID, String Output, ActionResult Result, Int32 localVariablesId , ClientData ClientInfo) at SkeltaWorkflow.ProcessApplicationFromAppDomain.xb3f9a0a027137b27(String xe ca380a02d130389, Object[] x4d6fe8a134d18d3e), SNITURHDEV2RC, Process - WFEngine. NET2, 20-12-2007 11:33:01
This behaviour seems to stop the workflow engine.
Any help would be much appreciated.
Thanks once again for your help.
Best regards,
Rui |
| | | | Supreme Being
       
Group: Forum Members Last Login: Saturday, April 26, 2008 Posts: 128, Visits: 422 |
| "Could not connect to the workflow engine at server: port. Will retry connecting". This is an information printed in logger console when the client is unable to sent a message to the engine for processing. This could be due to heavy traffic in messages which are sent to engine using sockets. This can be ignored. For the exception, Can you cross check if you have the latest patch installed? Send the version details to support or Login to the download site and check for the same
Moderator |
| | | | Supreme Being
       
Group: Forum Members Last Login: Wednesday, March 05, 2008 Posts: 80, Visits: 277 |
| When I have the latest patch installed I'll keep an eye on this error.
Thanks for your help |
| | | | Supreme Being
       
Group: Forum Members Last Login: Saturday, April 26, 2008 Posts: 128, Visits: 422 |
| Hi, You are always welcome!!!. Just wanted to add this for your information.If you are using the API's to Resume/Abort or Pause a workflow, You should always use CanPause, CanResume or CanKill API's before using the above.
Workflow.NET.Engine.Client engineClient = new Workflow.NET.Engine.Client("ApplicationName","WorkflowName"); //for aborting a workflow if(engineClient.CanKill(1)) { engineClient.Kill(1); } //for pausing a workflow if (engineClient.CanPause(1)) { engineClient.Pause(1); } //for resuming a workflow which is paused if (engineClient.CanResume(1)) { engineClient.Resume(1); } engineClient.Close();
Moderator |
| | | | Supreme Being
       
Group: Forum Members Last Login: Wednesday, March 05, 2008 Posts: 80, Visits: 277 |
| Should we do this even when its aborted trough the process execution view?
Thank you once again.
Rui |
| |
|
|