private void ProcessNewActivity(FunctionActivity activity)
{
if (activity == null) return;
var viewFactory = ActivityViewFactories.FirstOrDefault(f => f.Metadata.TargetType == activity.GetType());
if (viewFactory == null) return;
var view = viewFactory.CreateExport().Value;
view.Caption = viewFactory.Metadata.Caption;
view.Activity = activity;
var position = (activity.IsPropertyDefined(DesignProperties.PositionX) && activity.IsPropertyDefined(DesignProperties.PositionY))
? new Point(Convert.ToDouble(activity.GetValue(DesignProperties.PositionX)), Convert.ToDouble(activity.GetValue(DesignProperties.PositionY)))
: new Point(0, 0);
var host = new ActivityHost(activity.Id, view, position);
_surface.Children.Add(host);
}