mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
Refactored Workflows import/export step.
This commit is contained in:
@@ -1,14 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using Orchard.Events;
|
||||
|
||||
namespace Orchard.Workflows.ImportExport {
|
||||
public interface ICustomExportStep : IEventHandler {
|
||||
void Register(IList<string> steps);
|
||||
}
|
||||
|
||||
public class WorkflowsCustomExportStep : ICustomExportStep {
|
||||
public void Register(IList<string> steps) {
|
||||
steps.Add("Workflows");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -154,9 +154,8 @@
|
||||
<Compile Include="Forms\WebRequestForm.cs" />
|
||||
<Compile Include="Handlers\WorkflowContentHandler.cs" />
|
||||
<Compile Include="Handlers\WorkflowHandler.cs" />
|
||||
<Compile Include="ImportExport\WorkflowsCustomExportStep.cs" />
|
||||
<Compile Include="ImportExport\WorkflowsExportEventHandler.cs" />
|
||||
<Compile Include="ImportExport\WorkflowsRecipeHandler.cs" />
|
||||
<Compile Include="Recipes\Builders\WorkflowsStep.cs" />
|
||||
<Compile Include="Recipes\Executors\WorkflowsStep.cs" />
|
||||
<Compile Include="Models\AwaitingActivityRecord.cs" />
|
||||
<Compile Include="Models\CancellationToken.cs" />
|
||||
<Compile Include="Models\ActivityContext.cs" />
|
||||
|
||||
@@ -2,31 +2,31 @@
|
||||
using System.Linq;
|
||||
using System.Xml.Linq;
|
||||
using Orchard.Data;
|
||||
using Orchard.Events;
|
||||
using Orchard.Localization;
|
||||
using Orchard.Recipes.Services;
|
||||
using Orchard.Workflows.Models;
|
||||
|
||||
namespace Orchard.Workflows.ImportExport {
|
||||
public interface IExportEventHandler : IEventHandler {
|
||||
void Exporting(dynamic context);
|
||||
void Exported(dynamic context);
|
||||
}
|
||||
|
||||
public class WorkflowsExportEventHandler : IExportEventHandler {
|
||||
namespace Orchard.Workflows.Recipes.Builders {
|
||||
public class WorkflowsStep : RecipeBuilderStep {
|
||||
private readonly IRepository<WorkflowDefinitionRecord> _workflowDefinitionRepository;
|
||||
|
||||
public WorkflowsExportEventHandler(IRepository<WorkflowDefinitionRecord> workflowDefinitionRepository) {
|
||||
public WorkflowsStep(IRepository<WorkflowDefinitionRecord> workflowDefinitionRepository) {
|
||||
_workflowDefinitionRepository = workflowDefinitionRepository;
|
||||
}
|
||||
|
||||
public void Exporting(dynamic context) {
|
||||
public override string Name {
|
||||
get { return "Workflows"; }
|
||||
}
|
||||
|
||||
public void Exported(dynamic context) {
|
||||
|
||||
if (!((IEnumerable<string>)context.ExportOptions.CustomSteps).Contains("Workflows")) {
|
||||
return;
|
||||
public override LocalizedString DisplayName {
|
||||
get { return T("Workflows"); }
|
||||
}
|
||||
|
||||
public override LocalizedString Description {
|
||||
get { return T("Exports workflow definitions."); }
|
||||
}
|
||||
|
||||
public override void Build(BuildContext context) {
|
||||
var workflowDefinitions = _workflowDefinitionRepository.Table.ToList();
|
||||
|
||||
if (!workflowDefinitions.Any()) {
|
||||
@@ -34,7 +34,7 @@ namespace Orchard.Workflows.ImportExport {
|
||||
}
|
||||
|
||||
var root = new XElement("Workflows");
|
||||
context.Document.Element("Orchard").Add(root);
|
||||
context.RecipeDocument.Element("Orchard").Add(root);
|
||||
|
||||
foreach (var workflowDefinition in workflowDefinitions.OrderBy(x => x.Name)) {
|
||||
root.Add(new XElement("Workflow",
|
||||
@@ -55,7 +55,6 @@ namespace Orchard.Workflows.ImportExport {
|
||||
new XAttribute("DestinationActivityId", transition.DestinationActivityRecord.Id),
|
||||
new XAttribute("DestinationEndpoint", transition.DestinationEndpoint ?? ""))))));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,35 +1,32 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Orchard.Data;
|
||||
using Orchard.Localization;
|
||||
using Orchard.Logging;
|
||||
using Orchard.Recipes.Models;
|
||||
using Orchard.Recipes.Services;
|
||||
using Orchard.Workflows.Models;
|
||||
|
||||
namespace Orchard.Workflows.ImportExport {
|
||||
public class WorkflowsRecipeHandler : IRecipeHandler {
|
||||
namespace Orchard.Workflows.Recipes.Executors {
|
||||
public class WorkflowsStep : RecipeExecutionStep {
|
||||
private readonly IRepository<WorkflowDefinitionRecord> _workflowDefinitionRepository;
|
||||
private readonly IRepository<ActivityRecord> _activityRepository;
|
||||
private readonly IRepository<TransitionRecord> _transitionRepository;
|
||||
|
||||
public WorkflowsRecipeHandler(IRepository<WorkflowDefinitionRecord> workflowDefinitionRepository, IRepository<ActivityRecord> activityRepository, IRepository<TransitionRecord> transitionRepository) {
|
||||
public WorkflowsStep(
|
||||
IRepository<WorkflowDefinitionRecord> workflowDefinitionRepository,
|
||||
IRepository<ActivityRecord> activityRepository,
|
||||
IRepository<TransitionRecord> transitionRepository) {
|
||||
|
||||
_workflowDefinitionRepository = workflowDefinitionRepository;
|
||||
_activityRepository = activityRepository;
|
||||
_transitionRepository = transitionRepository;
|
||||
Logger = NullLogger.Instance;
|
||||
T = NullLocalizer.Instance;
|
||||
}
|
||||
|
||||
public Localizer T { get; set; }
|
||||
public ILogger Logger { get; set; }
|
||||
|
||||
public void ExecuteRecipeStep(RecipeContext recipeContext) {
|
||||
if (!String.Equals(recipeContext.RecipeStep.Name, "Workflows", StringComparison.OrdinalIgnoreCase)) {
|
||||
return;
|
||||
public override string Name {
|
||||
get { return "Workflows"; }
|
||||
}
|
||||
|
||||
foreach (var workflowDefinitionElement in recipeContext.RecipeStep.Step.Elements()) {
|
||||
public override void Execute(RecipeExecutionContext context) {
|
||||
foreach (var workflowDefinitionElement in context.RecipeStep.Step.Elements()) {
|
||||
var workflowDefinition = GetOrCreateWorkflowDefinition(workflowDefinitionElement.Attribute("Name").Value);
|
||||
var activitiesElement = workflowDefinitionElement.Element("Activities");
|
||||
var transitionsElement = workflowDefinitionElement.Element("Transitions");
|
||||
@@ -65,8 +62,6 @@ namespace Orchard.Workflows.ImportExport {
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
recipeContext.Executed = true;
|
||||
}
|
||||
|
||||
private WorkflowDefinitionRecord GetOrCreateWorkflowDefinition(string name) {
|
||||
Reference in New Issue
Block a user