I've now finished implementing a system with the assistance
of your workflow package, and I must say that for most of it - the experience
has been a good one.
However there are a couple of things that have blown up and
a little niggle on my part...
Issue 1 - On a couple of occasions, I've had the recent
changes tab not load (showing an exception instead) stating that it could not
find a node id... Looking at the code it would appear that you are looking
through the audit log for the display info... Can I suggest that you include a
guard clause that skips over any id's that cannot be hydrated?
Issue 2 - On a few occasions (mostly because the db has lost
sync with the serialized workflow objects) the workflow editor fails to load
reporting that a key could not be found in the points collection.. again
looking at the code it appears that while the points are stored in the db and
the workflow config in binary serialized objects - there is a chance that the
correct set of points can become lost... in this case I would suggest checking
for the existence of the key and if not found then create a set of points for
the workflow task so that at least authors can see the editor and move tasks
into the correct place.
Niggle 1 - I heavily use SCM for my code base and really
appreciate the ability to diff between versions of code... to this point I use
courier to export out the content etc into xml for storage in the SCM... could
you provide a configuration option to allow serialization of the workflow as
xml instead of binary?
On the first point - if you could give me a screengrab or a stacktrave we'll make the fix.
Intreresting issue with point getting lost - I've never seen this - do you have any steps to reproduce?
Finally, Serialising to XML is probably unlikely to happen mainly because we have to serialise types provided by 3rd parties (custom tasks) and there are definitely limitations on what can be simply serialised to XML - for example collections can be complicated.
Could not load control: '/usercontrols/fmworkflow/RecentContent.ascx'.
Error message: System.ArgumentException: No node exists with id '1155' at umbraco.cms.businesslogic.CMSNode.setupNode() at umbraco.cms.businesslogic.web.Document.setupNode() at umbraco.cms.businesslogic.CMSNode..ctor(Int32 Id) at FergusonMoriyam.Workflow.Umbraco.Web.Ui.RecentContent.OnInit(EventArgs e) at System.Web.UI.Control.InitRecursive(Control namingContainer) at System.Web.UI.Control.AddedControl(Control control, Int32 index) at Spring.Web.Support.ControlAccessor.AddedControl(Control control, Int32 index) at Spring.Web.Support.SupportsWebDependencyInjectionOwnerProxy.AddedControl(Control control, Int32 index) at System.Web.UI.ControlCollection.Add(Control child) at umbraco.cms.presentation.dashboard.OnInit(EventArgs e)
As for the second issue, I think the best steps to reproduce (and possibly why I noticed it so much)..
- Create a workflow with some tasks in it, save the editor
- Backup the Umbraco database
- Modify the previous workflow, adding new tasks, saving the workflow.
- Shutdown the website, freeing up the db connections
- Restore the backup of the db... (This mimics copying the workflow from dev to qa,uat or production without taking the exact db instance across)
- spin up Umbraco back office and head over to the workflow editor.. Watch it blow up with the following stack trace...
Server Error in '/' Application.
The given key was not present in the dictionary.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[KeyNotFoundException: The given key was not present in the dictionary.]
System.Collections.Generic.Dictionary`2.get_Item(TKey key) +10711577
FergusonMoriyam.Workflow.Ui.Factory.UiWorkflowTaskCollectionFactory.Create(IEnumerable`1 tasks, IPointCollection pointCollection) +196
FergusonMoriyam.Workflow.Umbraco.Web.Ui.EditDesign.OnPreRender(EventArgs e) +192
System.Web.UI.Control.PreRenderRecursiveInternal() +83
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +974
A few issues/suggestions
Hi,
I've now finished implementing a system with the assistance of your workflow package, and I must say that for most of it - the experience has been a good one.
However there are a couple of things that have blown up and a little niggle on my part...
Issue 1 - On a couple of occasions, I've had the recent changes tab not load (showing an exception instead) stating that it could not find a node id... Looking at the code it would appear that you are looking through the audit log for the display info... Can I suggest that you include a guard clause that skips over any id's that cannot be hydrated?
Issue 2 - On a few occasions (mostly because the db has lost sync with the serialized workflow objects) the workflow editor fails to load reporting that a key could not be found in the points collection.. again looking at the code it appears that while the points are stored in the db and the workflow config in binary serialized objects - there is a chance that the correct set of points can become lost... in this case I would suggest checking for the existence of the key and if not found then create a set of points for the workflow task so that at least authors can see the editor and move tasks into the correct place.
Niggle 1 - I heavily use SCM for my code base and really appreciate the ability to diff between versions of code... to this point I use courier to export out the content etc into xml for storage in the SCM... could you provide a configuration option to allow serialization of the workflow as xml instead of binary?
Anyway...
Thanks for a great product
Thanks for your feedback!
On the first point - if you could give me a screengrab or a stacktrave we'll make the fix.
Intreresting issue with point getting lost - I've never seen this - do you have any steps to reproduce?
Finally, Serialising to XML is probably unlikely to happen mainly because we have to serialise types provided by 3rd parties (custom tasks) and there are definitely limitations on what can be simply serialised to XML - for example collections can be complicated.
Hi,
Thanks for the quick reply..
The stack trace is as follows....
Could not load control: '/usercontrols/fmworkflow/RecentContent.ascx'.
Error message: System.ArgumentException: No node exists with id '1155' at umbraco.cms.businesslogic.CMSNode.setupNode() at umbraco.cms.businesslogic.web.Document.setupNode() at umbraco.cms.businesslogic.CMSNode..ctor(Int32 Id) at FergusonMoriyam.Workflow.Umbraco.Web.Ui.RecentContent.OnInit(EventArgs e) at System.Web.UI.Control.InitRecursive(Control namingContainer) at System.Web.UI.Control.AddedControl(Control control, Int32 index) at Spring.Web.Support.ControlAccessor.AddedControl(Control control, Int32 index) at Spring.Web.Support.SupportsWebDependencyInjectionOwnerProxy.AddedControl(Control control, Int32 index) at System.Web.UI.ControlCollection.Add(Control child) at umbraco.cms.presentation.dashboard.OnInit(EventArgs e)
As for the second issue, I think the best steps to reproduce (and possibly why I noticed it so much)..
- Create a workflow with some tasks in it, save the editor
- Backup the Umbraco database
- Modify the previous workflow, adding new tasks, saving the workflow.
- Shutdown the website, freeing up the db connections
- Restore the backup of the db... (This mimics copying the workflow from dev to qa,uat or production without taking the exact db instance across)
- spin up Umbraco back office and head over to the workflow editor.. Watch it blow up with the following stack trace...
Server Error in '/' Application.
The given key was not present in the dictionary.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
As for the xml serialization, fair point :)
Thanks for this - I am planning to do some work on this in the coming days so will try to address your concerns.
Hey you guys, I'm having Andrew's first issue all the time lately. Is there anything I can do to fix it or patch it up quickly?
Hi - sorry - I will try and spend some time on this tomorrow.
Many Thanks.
is working on a reply...