Can anyone point me in the right direction for developing a custom designer for a Flowchart activity?
In actual fact, the Flowchart control we are using is a custom activity - it's not the regular .NET Flowchart activity, but our own creation with a collection for FlowNodes/etc. We'd like to put a UI around it now as well ... mimicking the .NET Fllowchart
designer. Is that really possible, or extremely difficult? It seems there's no real API or anything available for constructing the node connectors, arrows, etc.
1 Answer Found
I'm struggling with that too. Please see post http://social.msdn.microsoft.com/Forums/en-US/wfprerelease/thread/49d2aa2f-27bd-4c6c-a955-bfed7f6cbf74/#7f784d2a-12c1-4c21-b611-745fe9bdce67
Especially reply from Tim:
"There's a blog series I did on getting the most basic parts of ICompositeView working, however, it was hard slog, I didn't get very far, and there's lots of bugs, so I don't think it has been that useful to people looking for a simple solution. (sample
Second option is downloading the State Machine source code from codeplex and using that as a basis for your own custom flowchart. It is a complex sample code but full of features and much less buggy. Of course you don't have to modify State Machine if State
Machine already solves your problem. If you do want to modify it, or encounter bugs with it you might be able to get some support via this forum.
[A last ditch option for those who want to be broken by future .net releases that I have seen people doing is interesting hacks in designer, like modifying the visual tree directly.]
But in summary - there is no really easy way to add the custom flowdecision feature to flowchart.
State Machine 4.0 link: http://wf.codeplex.com/releases/view/43586
Besides this, I've seen something done in .NET 3.5 with FreeFormActivityDesigner which would've been very useful for me (see methods exposed) but it belongs to System.Workflow.ComponentModel.Design and
can't be used with .NET 4 activities and from what I see in post http://social.msdn.microsoft.com/Forums/en-US/wfprerelease/thread/dff6046c-b451-4ffc-b51d-137488c60617 the
approach recommended is WorkflowItemPresenter (see WF 4 samples).
Currently I'm studying the code from StateMachine, see how far I get but like Matt Winkler says "Our goal was to have
a robust, extensible freeform base that could be used to construct a number of different graph oriented workflow designers. Unfortunately, we will not have time to complete that for vs2010" (http://social.msdn.microsoft.com/Forums/en-US/wfprerelease/thread/dff6046c-b451-4ffc-b51d-137488c60617)
they didn't finish therefore not easy with VS2010.
I wrote a simple Native activity which implements
CacheMetadata(NativeActivityMetadata metadata) to
declare arguments and variables.
The activity works great but when I tried to use it inside a flowchart activity I found out that
CacheMetadata is not called which of course prevents my activity from working.
How can a custom activity be used inside a flowchart activity if
CacheMetadata not called? Is there a way to make
CacheMetadata run when the custom activity is placed inside a flowchart activity?
Dear all, in order to simplify the workflow "design" we would like to build our own activities that return a result with one or more nodes. Something like the "True/False" nodes that come out of the FlowDecision Activity.
I know that one could normally add a FlowDecision activity after our custom activity and insert the condition expression to redirect the flow based on the result... however this requires the ability to know the "content" of the previous activity, and for some users we're targeting it's not immediate.
Thank you!Read more...
Want to create a custom activity which can be used for flowcharting.
Since Flowchart is a sealed class, We tried implementing "IActivityTemplateFactory" and returning a flowchart activity instance, however the custom properties that we have defined in our custom activity are not comming through the property window. We realised
that the custom activity is just a flowchart instance.
How can we get the additional properties and behaviours in the custom activity along with flowchart?
In a custom Rehosted Designer, when attempt to load a custom activity that has the Designer Attribute, referecing a custom ActivityDesigner, the rehosted designer display only the message "Could not generate view for MyCustomActivity" with red backtext.
When the mouse pointer is passed over the text, the following message is displayed:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation, --> System.Exception: The component 'Procwork.Software.Mersey.CORE.Common.ProcessManager.Designers.BusinessSourceActivityDesigner' does not have a resource identified by the URI '/Procwork.Software.Mersey.CORE.Common.ProcessManager;component/designers/businesssourceactivitydesigner.xaml'.
at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
at Procwork.Software.Mersey.CORE.Common.ProcessManager.Designers.BusinessSourceActivityDesigner.InitializeComponent() in c:\Procwork\PW.Mersey\Modules\CORE\Common\ProcessManager\Designers\BusinessSourceActivityDesigner.xaml:line 1
at Procwork.Software.Mersey.CORE.Common.ProcessManager.Designers.BusinessSourceActivityDesigner..ctor() in C:\Procwork\PW.Mersey\Modules\CORE\Common\ProcessManager\Designers\BusinessSourceActivityDesigner.xaml.cs:line 22
at Procwork.Software.Mersey.CAD.Windows.MerseyObject.MerseyObjectView.edtCompl_ButtonClick(Object sender, ButtonPressedEventArgs e) in C:\Procwork\PW.Mersey\Modules\CAD\Clients\MerseyObject\MerseyObjectView.cs:line 69
at DevExpress.XtraEditors.Repository.RepositoryItemButtonEdit.RaiseButtonClick(ButtonPressedEventArgs e)
at DevExpress.XtraEditors.ButtonEdit.OnClickButton(EditorButtonObjectInfoArgs buttonInfo)
at DevExpress.XtraEditors.ButtonEdit.OnMouseUp(MouseEventArgs e)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at DevExpress.Utils.Controls.ControlBase.WndProc(Message& m)
at DevExpress.XtraEditors.BaseEdit.WndProc(Message& m)
at DevExpress.XtraEditors.TextEdit.WndProc(Message& msg)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at Desktop.Program.Main() in C:\Procwork\PW.Mersey\Desktop\PW.MERSEY\Program.cs:line 19
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String args)
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
The Custom Activity Class:
public sealed class BusinessSourceActivity : NativeActivity
The Custom Designer
xmlns:sapv="clr-namespace:System.Activities.Presentation.View;assembly=System.Activities.Presentation" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" d:DesignHeight="76" d:DesignWidth="217">
<TextBlock Height="23" HorizontalAlignment="Left" Margin="12,12,0,0" Name="textBlock1" Text="This is a test" VerticalAlignment="Top" Width="117" />
Anyone has any ideia what is causing this problem?
Is there a way to make an (expanded) FlowChart activity's designer fill the entire workflow designer area (excluding the areas used by expand/collapse links, breadcrumb, workflow shellbar, etc)?
Depending on the size of the area in which the workflow designer is hosted, there can be a lot of wasted 'white space' around the FlowChart that can't be used for anything by the workflow author. While the workflow author can resize the FlowChart designer
within the workflow designer, it would be nice to have a way to make the workflow designer automically size to fill, at least to the initial size, of the available designer area. (It might not be great to have this continously resize the FlowChart designer
automatically, but at least if it initially fills the free space, that would be nice).
I am using a custom activity designer based on WorkflowViewElement.
Does anybody know how to bind information about Validation Error to an element of my designer like it is implemented in ActivityDesigner with red exclamation mark and tooltip with error message?Read more...
I have a little issue with a custom activity that should be exposed through SharEPoint Designer.
My Action is available in the Actions drop down list but when I select this one, nothing else appears (The Sentence is not displayed).
Here is the .ACTIONS file and the Code for the activity.
I did not start from scratch so I think that there is a little issue that should be easily find...
Thanks a lot,
<?xml version="1.0" encoding="utf-8"?>
<Actions Sequential="then" Parallel="and">
Assembly="Company.SharePoint.Common.Workflows, Version=184.108.40.206, Culture=neutral, PublicKeyToken=9f4da00116c38ec5"
<RuleDesigner Sentence="Copy value to %1">
<FieldBind Field="Variable,ValueType" Text="workflow variable" Id="1" DesignerType="parameterNames" />
<Parameter Name="__Context" Type="Microsoft.SharePoint.WorkflowActions.WorkflowContext, Microsoft.SharePoint.WorkflowActions" Direction="In"/>
<Parameter Name="__ListId" Type="System.String, mscorlib" Direction="In" />
<Parameter Name="__ListItem" Type="System.Int32, mscorlib" Direction="In" />
<Parameter Name="Variable" Type="System.Object, mscorlib" Direction="Out" />
<Parameter Name="ValueType" Type="System.String, mscorlib" Direction="In" />
Public Class MyActivity
Public Shared __ListIdProperty As DependencyProperty = _
DependencyProperty.Register("__ListId", GetType(String), GetType(MyActivity))
Public Property __ListId() As String
Return DirectCast(MyBase.GetValue(__ListIdProperty), String)
Set(ByVal value As String)
Public Shared __ListItemProperty As DependencyProperty = _
DependencyProperty.Register("__ListItem", GetType(String), GetType(MyActivity))
Public Property __ListItem() As Integer
Return DirectCast(MyBase.GetValue(__ListItemProperty), Integer)
Set(ByVal value As Integer)
Public Shared __ContextProperty As DependencyProperty = _
DependencyProperty.Register("__Context", GetType(WorkflowContext), GetType(MyActivity))
Public Property __Context() As WorkflowContext
Return DirectCast(MyBase.GetValue(__ContextProperty), WorkflowContext)
Set(ByVal value As WorkflowContext)
Public Shared VariableProperty As DependencyProperty = _
DependencyProperty.Register("Variable", GetType(Object), GetType(MyActivity))
Public Property Variable() As Object
Return DirectCast(MyBase.GetValue(VariableProperty), Object)
Set(ByVal value As Object)
Public Shared ValueTypeProperty As DependencyProperty = _
DependencyProperty.Register("ValueType", GetType(String), GetType(MyActivity))
Public Property ValueType() As String
Return DirectCast(MyBase.GetValue(ValueTypeProperty), String)
Set(ByVal value As String)
Public Overloads Function Execute() As ActivityExecutionStatus
Variable = "MyURL"
Hello all, and thank you for reading this post.
I have written a custom workflow activity for use in SharePoint designer. Currently my code is working fine but I want to make the workflow activity a tad bit more user friendly.
Currently, when the workflow activity is used, the user has to specify a set of parameters (which are set up as Dependence Properties in the code behind). The properties hold the webservice's URI, the name of the method to call, and a soap envelope.
Ideally, I would like the designer to update itself as the user provides this information. After being supplied with a URI I would like an event to be fired and a handler to be called which would retrieve the available methods exposed by the service at that
Then after a method is called, I would like the parameters (if any) the method takes in to be exposed via the SharePoint designer UI.
Does anyone have any clue if this is possible and if so where to begin?
Just in case anyone is curious, this is how my dependency properties are being declared -
publicstatic DependencyProperty ServiceUrlProperty = DependencyProperty.Register("ServiceUrl", typeof(string), typeof(CallWebService));
Thank you for reading.
If you need any further information in order to answer my question feel free to ask me.
I adding to activities toolbar my custom activity, made in rehosted designer and compiled via msbuild.exe . Then I dragging it from toolbar to my workflow view. But when I try to compile or just run activity , which is using activity from the dll, there
is the error. It cannot find type of needed activity in dll. Dll is in designer's executable folder.
=Sorry for my englishRead more...
I am developing custom activity designers based on "WorkflowViewElement" instead of "ActivityDesigner" in my xaml. It allows me to have greater control of the look and feel of the designer.
However I noticed that with this approach, the breakpoint visual cue (Dark red solid circle that appears on the left side of the designer when you set breakpoint on the designer) is not visible. It works fine when you write your designed based on "ActivityDesigner".
The same behavior happens to the debug visual cue when you debugging the WF. It appears as bright yellow rectangle surrounding the activity designer if you are based on "ActivityDesigner", but it is not available when your designer is based on"WorkflowViewElement".
Any help is highly appreciated.
I'm using code posted here http://blogs.msdn.com/b/tilovell/archive/2009/12/31/freeform-custom-activity-designers-using-icompositeview.aspx hosted
in a designer taken from Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4( UsingWorkflowItemPresenter.sln). However, I can't drag & drop Activity1 given as sample into Canvas or any other kind
of activity for that matter. Could you tell me what I'm doing wrong, please?
Also, I would like to know how I could make the Canvas activity fill the WorkflowDesigner and not being able to be deleted.
Thank youRead more...
Not usre if this is the right place to post this but sure many guys must have used this
I have a siteA at
and Site B at
when i try and use the
Copy List Item Extended Activity to copy the list items across i keep getting error:
System.IO.FileNotFoundException: The Web application at http://myserverA/sites/pop/lists/mylistname could not be found. Verify that you have typed the URL correctly. If the URL should be serving existing content, the system administrator may need to add a new request URL mapping to the intended application.
My AAM looks like this:
Internal URL Zone Plublic URL for Zone
http://myserverA:8080 Default http://myserverA:8080
http://myserverA.domainname:8080 Default http://myserverA.domainname:8080
http://myserverA.domainname:2020 Default http://myserverA.domainname:2020 -- this is been extended for FBA
Any ideas what i need to do.
I have a custom activity, which is available under Designer Actions.
I can see and set parameters. However on the Finish step, I encounter following error:
Errors were found when compiling the workflow. The workflow files were saved but cannot be run.
On clicking Advanced, I get this:
(14, 47) The type name 'SendMailWithAttachmentActivity' does not exist in the type 'SendMailWithAttachmentActivity.SendMailWithAttachmentActivity')
Here is Action tag:
<Action Name="Send Attachments"
Assembly="SendMailWithAttachmentActivity, Version=220.127.116.11, Culture=neutral, PublicKeyToken=ff5f77ebcbc6469d"
<RuleDesigner Sentence="Send Attachs to %1 besides %2">
<FieldBind Field="EmailID" Text="people field" Id="1" DesignerType="TextArea"/>
<FieldBind Field="Junk" Text="enter junk" Id="2" DesignerType="TextArea" />
<Parameter Name="__Context" Type="Microsoft.SharePoint.WorkflowActions.WorkflowContext" Direction="In" />
<Parameter Name="__ListId" Type="System.String, mscorlib" Direction="In" />
<Parameter Name="__ListItem" Type="System.Int32, mscorlib" Direction="In" />
<Parameter Name="__ActivationProperties" Type="Microsoft.SharePoint.Workflow.SPWorkflowActivationProperties, Microsoft.SharePoint" Direction="Out" />
<Parameter Name="EmailID" Type="System.String, mscorlib" Direction="In" />
<Parameter Name="Junk" Type="System.String, mscorlib" Direction="In" />
Here is web.config entry:
<authorizedType Assembly="SendMailWithAttachmentActivity, Version=18.104.22.168, Culture=neutral, PublicKeyToken=ff5f77ebcbc6469d" Namespace="SendMailWithAttachmentActivity" TypeName="*" Authorized="True" />
The Activity class goes thus:
public partial class SendMailWithAttachmentActivity : Activity
The SendMailWithAttachmentActivity.dll has:
Assembly Name: SendMailWithAttachmentActivity
Default Namespace: SendMailWithAttachmentActivity
Any help is appretiated.
I am working with .net framework (3.5) Workflow Designer Application. I have created 3 types of custom activity which is inherited from System.Workflow.ComponentModel.Activity. These custom activites have its own custom activity designer classes which is
inherited from System.Workflow.ComponentModel.Design.ActivityDesigner.
I have created my Sequential Workflow. First I have dragged custom activity say, CustomactivityA. Then I added another type of custom activity say, CustomactivityB.
I am having one more type of custom activity say, CustomactivityC. When I try to drag CustomactivityC in between CustomactivityA and CustomactivityB it will allow me to do so.
Now the question is where I can write my condtion so that CustomactivityC cannot be placed in between. ie, which is the event that gets fired when I try to add an activity in between two activities, using which I can validate if I can allow that activity
to be inserted in between two activities ?Read more...
I have a workflow that uses custom activities and specially-typed variables. I constructed it using Visual studio however I can't load it on a rehosted workflow designer. It only shows me this red box saying "Activity could not be loaded because of
errors in the XAML." A workflow without custom activities or variables loads fine so I'm guessing that the designer doesn't recognize these custom activies or types. What do I need to do so the designer could load and edit workflows like this?
Thanks a lot!
Is it possible to manually adjust positioning/alignment of various nodes within a FlowChart activity? i.e. With code?
We have a custom activity that we manually add to a FlowChart activity when it's created, but it arbitrarily places on the designer - we'd like to control the position so it's alignment makes more sense.
Any way to do this?Read more...
I have created a composite activity using the Activity.xaml template. It contains a ForEach with a nested If. I would like to expose the Condition on the If into an activity designer b tnot display much else to the user. The If exists within the ForEach
and so has access to items in the collection when editing its condition (expresion editor), I would like to maintain this behaviour as well. I cant figure out how to bind a designer to a child activity. Please see xaml below.
This is a followup to this
forum question. In the earlier question, I found away to change the appearance of the flowchart designer in its collapsed state by changing the template of the activity designer. This seems to work pretty well. The one thing I've noticed is
that when I replace the flowchart's template with my own, even if I have a very small width to my template content, there seems to be some minimum width to the selected designer. That is, if my style looks like this:
<ControlTemplate x:Key="FlowchartDesignerCollapsedTemplate" TargetType="swd:ActivityDesigner">
<TextBlock Text="Hello, world!"/>
The width of the designer selected area is significantly wider than the width of the characters in 'Hello, world!'. If I have a border around my text, then my border is much wider than necessary. If I don't have a border, then when I mouse over
or select the activity designer, I see the right selection rectangle much further to the right of my text than I would expect.
Where is this extra width coming from (it's not in my template) and how can I get rid of it?
I would create a simple "flow chart designer" in Silverlight. I need to connect two controls (eg two rectangles) by a line (eg a LineGeometry with a StartPoint and an EndPoint). This line must have an orthogonal layout.
Is there a way (an algorithm) to define the points for an orthogonal line connector between two point? I've read about "Manhattan algorithm". It is the right way in your opinion? Are there some Silverlight libraries that could do that for me?
Thanks in advance for your help!
I've been having a look at the activities available for download from codeplex (http://wf.codeplex.com/) and I can't seem to get the activity designers of any of the activities to display in my rehosted workfow designer
(It displays in the VS2010 designer). Is there something i'm missing here?
I've had a brief look at the source code of the activities and i've noticed they are missing the "[Designer]" attribute so I can't figure out how to get my rehosted designer to pick up the correct designer for each activity.