Inhalte aufrufen

Profilbild
- - - - -

Plugin Entwicklung - Data Importer


  • Bitte melden Sie sich an, um eine Antwort zu verfassen.
2 Antworten zu diesem Thema

#1 ErichBrunner

ErichBrunner

    Newbie

  • Members
  • Punkt
  • 6 Beiträge

Geschrieben: 06 November 2020 - 06:11

Hi,

 

Ich möchte ein Daten Import Plugin schreiben. Jedoch fehlt mir, analog dem GMC Exporter Plugin, eine Art Blue Print dafür.

Bitte um einen Link zu einem Sample.

 

Vielen Dank!

 

Beste Grüsse,

Erich



#2 Marcus Gesing

Marcus Gesing

    SmartStore AG

  • Administrators
  • 3801 Beiträge

Geschrieben: 06 November 2020 - 11:44

Beispiel sind z.B. der Produkt-Importer oder der einfachere Importer für Newsletter-Abonnenten.
 
Gestartet bzw. ausgeführt wird ein solcher Importer dann über einen eigenen Scheduled-Task. Hier mal etwas Pseudo-Code dazu:
public class MyEntityImporterTask : ITask
{
	private ProgressValueSetter ProgressValueSetter { get; set; }

	public void Execute(TaskExecutionContext context)
	{
		var services = context.Resolve<ICommonServices>();

		ProgressValueSetter = delegate (int val, int max, string msg)
		{
			context.SetProgress(val, max, msg, true);
		};

		var executeContext = new ImportExecuteContext(
			context.CancellationToken,
			ProgressValueSetter,
			services.Localization.GetResource("Admin.DataExchange.Import.ProgressInfo")
		);

		var myImporter = new MyEntityImporter(
			context.Resolve<ICommonServices>(),
                        /*,...*/
		);

		myImporter.Execute(executeContext);
	}
}
public class MyEntityImporter : IEntityImporter
{
    private readonly ICommonServices _services;

    public MyEntityImporter(
        ICommonServices services
        /*,...*/)
    {
        _services = services;
    }

    public void Execute(ImportExecuteContext context)
    {
        // Do work...
    }
}
 
Einen eigenen Task erzeugt man typischerweise in der Install-Methode eines Plugins:
private readonly IScheduleTaskService _scheduleTaskService;

_scheduleTaskService.GetOrAddTask<MyEntityImporterTask>(x =>
{
	x.Name = "My Entity Import";
	x.CronExpression = "0 4 * * *"; // At 04:00
	x.Enabled = false;	// Only manual execution.
});

 


Marcus Gesing

Smartstore AG


#3 ErichBrunner

ErichBrunner

    Newbie

  • Members
  • Punkt
  • 6 Beiträge

Geschrieben: 10 November 2020 - 15:30

Hi Marcus

 

Besten Dank. Die Kombination aus deinem Code und dem VS Extension -> Plugin Generator Task -> Add a Task hat mir einen Startpunkt geben. 

 

Grüsse,

Erich 


  • stefanmueller gefällt das