Status: Submitted
Status: Duplicate
Status: In progress
Status: Implemented
Status: Rejected

v9 Visual Script Error reporting really must be improved

Posted Oct 21 by Jerome Pearce.
Updated Oct 21.

I defy anyone to make any sense at all from the following:


Exception 'At least one object must implement IComparable.' occurred when attempting to 'Run script'.
At least one object must implement IComparable.


   at Metastorm.Engine.WF.Hosting.MSWorkflowCaller.CheckFinalState(String workflowName, Guid wfInstance, WorkflowInstanceState wfInstanceState, Boolean ignoreWFTermination)
   at Metastorm.Engine.WF.Hosting.MSWorkflowCaller.CallSync(Type workflowType, IFolder90 folderEnvironment, Guid batchId, Guid instanceId, Dictionary`2 parameters)
   at Metastorm.Engine.Runtime.FolderWorkflow.CallWorkflow(Type workflowType, Dictionary`2 parameters)
   at Metastorm.Engine.Runtime.FolderWorkflow.StartWorkflow(Type workflowType, Dictionary`2 parameters)
   at Metastorm.Runtime.Core.EngineService.StartWorkflow(Type classType, Dictionary`2 args)
   at Metastorm.Runtime.Models.*****.PY_CalculatePayment.Declarations.PY_CalculatePaymentFields.Declarations.CalculatePayment.WhenChanged()
   at Metastorm.Engine.Operations.RefillFolderHandler.<>c__DisplayClass6.<Process>b__1()
   at Metastorm.Engine.Common.ExecutableElements.VoidWrapper(String call, String context, DelegateVoid function, IFolder90 folder, ExecutableElementsContext contextType, ExecutableElementsFunction functionType, Type source)
   at Metastorm.Engine.Operations.RefillFolderHandler.Process(String sessionId, String callerId, CultureInfo culture, String clientData, DateTimeOffset requestTimeStamp, String folderId, String actionName, String formName, Collection`1 updates, Boolean noLayout, Collection`1 fieldInputList, String serverData)
   at Metastorm.Engine.Operations.FolderOperations.RefillFolder(String sessionId, String callerId, CultureInfo culture, String clientData, DateTimeOffset requestTimestamp, String folderId, String actionName, String formName, Collection`1 updates, Boolean noLayout, Collection`1 fieldInputList, String serverData)


Can this be improved at all? The actual Visual Script would be nice - the caption, not the neame, as well. And a 'human readable' description of the error.



And before anyone asks me "what was the code that caused the error", the answer is that I can't find the code. That is the point of this request to make it clearer where, and what, the error is.


I'd start from your CalculatePayment.WhenChanged() function or thereabouts. (might not be your code even, but looks like it's involved.


No idea what the error message means though…


That was where it was - I knew that, but there are about 40 Activities in that beauty….

Found it in the end by guesswork and (poor) memory - Min() does not do currency fields. You can't even cast them to Real to make it work for some reason.


Is that the Metastorm Min() function or the .Net Min() function, or is that a silly question?




At least I assume it is - it is editable in the Expression Builder, which I assume .Net functions are not.


I thought you might say that:-) Why they felt the need to write their own Min() function, or at least didn't just make it a wrapper for the System.Math.Min() function I'll never know. Maybe the ..Net version was REALLY DEFICIENT!!! Or maybe not, there is nobody to ask the question of…


And on the subject, wouldn't it be nice of the Metastorm Text class inherited from String so we could do normal string comparison things on it. Oh well…




I had a similar issue with a project not being able to open the project Roles due to the icomparable , but another user could open the exact same project on my laptop by running the designer under their user account. After a lot of investigation to find out why my account was having an issue, I found that a file was corrupted in the appdata\local\IsolatedStorage directory.


Once i deleted this folder and reopened the project everything was fine.


*Type : System.ArgumentException, mscorlib, Version=, Culture=neutral, PublicKeyToken=b77a5c561934e089

Message : At least one object must implement IComparable.

Source : mscorlib

Help link :

ParamName :

Data : System.Collections.ListDictionaryInternal

TargetSite : Int32 Compare(System.Object, System.Object)

Stack Trace : at System.Collections.Comparer.Compare(Object a, Object b)
at DevExpress.Data.Storage.DataStorageObjectComparer.CompareRecordsCore(Int32 listSourceRow1, Int32 listSourceRow2)
at DevExpress.Data.DataControllerBase.CompareRecords(DataColumnSortInfoCollection sortInfo, Int32 listSourceRow1, Int32 listSourceRow2, Boolean useStorage)
at DevExpress.Data.VisibleListSourceRowCollection.QuickSort(DataColumnSortInfoCollection sortInfo, Int32 left, Int32 right)
at DevExpress.Data.DataController.DoSortRows()
at DevExpress.Data.DataController.DoRefreshCore(Boolean useRowsKeeper)
at DevExpress.Data.DataController.DoRefresh(Boolean useRowsKeeper)
at DevExpress.Data.DataController.EndUpdateCore(Boolean sortUpdate)
at DevExpress.XtraGrid.Views.Base.BaseView.SynchronizeDataController()
at DevExpress.XtraGrid.Views.Base.BaseView.OnLoaded()
at DevExpress.XtraGrid.Views.Base.ColumnView.OnLoaded()
at DevExpress.XtraGrid.Views.Base.BaseView.OnEndDeserializing(String restoredVersion)
at DevExpress.XtraGrid.Views.Grid.GridView.OnEndDeserializing(String restoredVersion)
at DevExpress.Utils.Serializing.Helpers.DeserializeHelper.DeserializeObject(Object obj, IXtraPropertyCollection store, XtraSerializationFlags parentFlags, OptionsLayoutBase options)
at DevExpress.Utils.Serializing.XtraSerializer.DeserializeObject(Object obj, IXtraPropertyCollection store, OptionsLayoutBase options)
at DevExpress.XtraGrid.Views.Base.BaseView.RestoreLayoutCore(XtraSerializer serializer, Object path, OptionsLayoutBase options)
at DevExpress.XtraGrid.Views.Base.BaseView.RestoreLayoutFromStream(Stream stream, OptionsLayoutBase options)
at Metastorm.Ide.WinForm.RichUi.GridLayoutSerializer.RestoreLayout()
at Metastorm.Ide.WinForm.RichUi.GridLayoutSerializer..ctor(Object source, BaseView view)
at Metastorm.Ide.WinForm.RichUi.GridLayoutSerializer.SetGridLayoutSerializer(Object source, BaseView view)
at Metastorm.Designer.Roles.RoleEditor.InitializeGrid()
at Metastorm.Designer.Roles.RoleEditor..ctor(RoleView roleView, RoleContent content)
at Metastorm.Designer.Roles.RoleView..ctor(IContent content)
at Metastorm.Designer.Roles.RoleViewProvider.CreateView(IContent content)
at Metastorm.Ide.WinForm.Views.ViewService.CreateViews(IContent content)
at Metastorm.Ide.WinForm.ShellIdeService.ActivateView(IContent content, Boolean show)
at Metastorm.Ide.SolutionExplorer.OpenCommand.Execute(IExplorerTreeNode node, Object[] parameters)
at Metastorm.Ide.WinForm.RichUi.ExplorerTreeNode.ExecuteCommand(String name, Object[] parameters)
at Metastorm.Ide.WinForm.RichUi.ExplorerTreeView.ExecuteCommand(String name, Object[] parameters)
at Metastorm.Ide.WinForm.RichUi.ExplorerTreeView.ExplorerTreeView_MouseClickEvent(Object sender, MouseEventArgs e)
at Metastorm.Ide.WinForm.RichUi.ExplorerTreeView.OnMouseDoubleClick(MouseEventArgs e)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at DevExpress.XtraEditors.Container.EditorContainer.WndProc(Message& m)
at Metastorm.Ide.WinForm.RichUi.ExplorerTreeView.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


Just wanted to say thanks to Luke for the tip on deleting the IsolatedStorage folder. I had the same issue when trying to open the "roles view" and this solved it for me. BIG THANKS!

 You have subscribed and will receive email notifications of updates to this topic. To unsubscribe, uncheck the checkbox.


Related categories

Related tags

Your comment

To leave a comment, please sign in.