using System.Activities;
using Accantum.Wms.ActivityContracts.Attributes;
using Accantum.Wms.ActivityContracts.Properties;
namespace Accantum.Wms.ActivityContracts.Base
{
/// <summary>
/// Basisklasse für NativeActivities
/// </summary>
public abstract class WmsNativeActivity: NativeActivity, IWmsActivityBase
{
/// <summary>
/// Kennzeichen, ob die Aktivität auskommentiert ist. Wenn Ja, wird die ExecuteMethode nicht aufgerufen.
/// </summary>
[ExcludeInAnnotation]
[LocalizedDisplayName("Activity_Disabled", typeof(WmsActivityResources))]
[LocalizedDescription("Activity_DisabledDesc", typeof(WmsActivityResources))]
public bool Disabled { get; set; }
/// <summary>
/// Prüft die Aktivitätsversion (<see cref="SupersedesAttribute"/>)
/// Prüft das Disabled-Property
/// </summary>
protected override void CacheMetadata(NativeActivityMetadata a_oMetadata)
{
//Bei deaktivierten Aktivitäten Fehler nicht anzeigen
if (Disabled)
{
a_oMetadata.SetValidationErrorsCollection(null);
a_oMetadata.AddValidationError(CreateDisabledValidationWarning());
}
else {
base.CacheMetadata(a_oMetadata);
}
SupersedesAttribute.AddWarningIfIsSuperseded(GetType(), a_oMetadata);
}
/// <summary>
/// Methode wird vor der Ausführung aufgerufen und prüft das Disabled-Kennzeichen.
/// </summary>
/// <returns>true, wenn die AktivtätAktivität ausgeführt werden soll.</returns>
protected virtual bool BeforeExecute(NativeActivityContext context)
{
if (!Disabled)
return true;
var wmsApi = context.GetExtension<IWmsApiExtension>();
wmsApi.TrackInfo(context, GetDisabledWarning());
return false;
}
protected sealed override void Execute(NativeActivityContext context)
{
if (!BeforeExecute(context))
return;
ExecuteIntern(context);
}
protected abstract void ExecuteIntern(NativeActivityContext context);
}
} |