示例#1
0
 public Activity LoadFromSource(IApplicationHost host)
 {
     if (Type == WorkflowType.File)
     {
         String fullPath = GetWorkflowFullPath(host);
         using (var sr = new StreamReader(fullPath))
         {
             Definition = sr.ReadToEnd();
             sr.BaseStream.Seek(0, SeekOrigin.Begin);
             using (var xr = ActivityXamlServices.CreateReader(sr.BaseStream))
             {
                 var root = ActivityXamlServices.Load(xr);
                 RuntimeActivity.Compile(GetHashedName(), root);
                 return(root);
             }
         }
     }
     else if (Type == WorkflowType.ClrType)
     {
         return(System.Activator.CreateInstance(Assembly, Name).Unwrap() as Activity);
     }
     else if (Type == WorkflowType.Definition)
     {
         using (var sr = new StringReader(Definition))
         {
             Activity root = ActivityXamlServices.Load(sr) as Activity;
             Cached = RuntimeActivity.Compile(GetHashedName(), root);
             return(root);
         }
     }
     else
     {
         throw new NotImplementedException($"WorkflowDefinition. Invalid WorkflowType. Type={Type.ToString()}");
     }
 }
示例#2
0
 public Activity LoadFromSource(IApplicationHost host, IDbContext dbContext)
 {
     if (Type == WorkflowType.File)
     {
         String fullPath = GetWorkflowFullPath(host);
         using (var sr = new StreamReader(fullPath))
         {
             Definition = sr.ReadToEnd();
             sr.BaseStream.Seek(0, SeekOrigin.Begin);
             using (var xr = ActivityXamlServices.CreateReader(sr.BaseStream))
             {
                 var root = ActivityXamlServices.Load(xr);
                 RuntimeActivity.Compile(GetHashedName(), root);
                 return(root);
             }
         }
     }
     else if (Type == WorkflowType.Db)
     {
         var fullPath = Path.Replace('\\', '/').ToLowerInvariant();
         fullPath = System.IO.Path.ChangeExtension(fullPath, ".xaml");
         var appStream = dbContext.Load <AppStream>(null, "a2sys.LoadApplicationFile", new { Path = fullPath });
         if (appStream.Stream == null)
         {
             throw new WorkflowException($"There is no definition for '{fullPath}'");
         }
         Definition = appStream.Stream;
         using (var sr = new StringReader(appStream.Stream))
         {
             Activity root = ActivityXamlServices.Load(sr) as Activity;
             Cached = RuntimeActivity.Compile(GetHashedName(), root);
             return(root);
         }
     }
     else if (Type == WorkflowType.ClrType)
     {
         return(System.Activator.CreateInstance(Assembly, Name).Unwrap() as Activity);
     }
     else if (Type == WorkflowType.Definition)
     {
         using (var sr = new StringReader(Definition))
         {
             Activity root = ActivityXamlServices.Load(sr) as Activity;
             Cached = RuntimeActivity.Compile(GetHashedName(), root);
             return(root);
         }
     }
     else
     {
         throw new NotImplementedException($"WorkflowDefinition. Invalid WorkflowType. Type={Type.ToString()}");
     }
 }
示例#3
0
 public Activity LoadFromDefinition()
 {
     if (Type != WorkflowType.Definition)
     {
         throw new InvalidOperationException("Invalid WorkflowDefinition type. Expected 'WorkflowType.Definition'");
     }
     using (var sr = new StringReader(Definition))
     {
         Activity root = ActivityXamlServices.Load(sr) as Activity;
         Cached = RuntimeActivity.Compile(GetHashedName(), root);
         return(root);
     }
 }