Files
lux/EgwCoreLib.Lux.Data/Services/General/IProdService.cs
T

108 lines
5.0 KiB
C#

namespace EgwCoreLib.Lux.Data.Services.General
{
/// <summary>
/// Interfaccia servizio produzione
/// </summary>
public interface IProdService
{
#region Public Methods
/// <summary>
/// Richiesta di esecuzione di un job di tipo Balance
/// </summary>
/// <param name="codJob">Cod job</param>
/// <param name="balData">Dati bilanciamento</param>
/// <returns>True se elaborato con successo</returns>
Task<bool> BalanceJobAsync(string codJob, BalanceReqDto balData);
/// <summary>
/// Accoda una richiesta di calcolo
/// </summary>
/// <param name="reqType">Tipo richiesta</param>
/// <param name="reqUid">UID richiesta</param>
/// <param name="currRequest">Richiesta completa</param>
/// <returns>True se accodato con successo</returns>
Task<bool> EnqueueRequestAsync(string reqType, string reqUid, CalcRequestDTO currRequest);
/// <summary>
/// Restituzione singolo Job specifico dalla coda ORDINI
/// </summary>
/// <param name="cEnv">Environment richiesto</param>
/// <param name="id">ID Job</param>
/// <returns>Job serializzato</returns>
Task<string> GetJobAsync(EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS cEnv, string id);
/// <summary>
/// Restituisce il contenuto della prossima richiesta da eseguire x Environment
/// </summary>
/// <param name="cEnv">Environment richiesto</param>
/// <param name="qType">Tipo coda (default waiting)</param>
/// <returns>Richiesta serializzata</returns>
Task<string> GetNextAsync(EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS cEnv, ProdQueueType qType = ProdQueueType.waiting);
/// <summary>
/// Numero di Job in attesa su coda x environment e tipo
/// </summary>
/// <param name="cEnv">Environment richiesto</param>
/// <param name="qType">Tipo coda (default waiting)</param>
/// <returns>Lunghezza coda</returns>
Task<long> QueueLenAsync(EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS cEnv, ProdQueueType qType = ProdQueueType.waiting);
/// <summary>
/// Restituisce elenco corrente delle richieste x environment e tipo
/// </summary>
/// <param name="cEnv">Environment richiesto</param>
/// <param name="qType">Tipo coda</param>
/// <returns>Elenco di UID in coda</returns>
Task<List<RedisValue>> QueueListAllAsync(EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS cEnv, ProdQueueType qType);
/// <summary>
/// Reset coda del tipo richiesto...
/// </summary>
/// <param name="cEnv">Environment richiesto</param>
/// <param name="qType">Tipo coda</param>
/// <returns>True se resettato con successo</returns>
bool QueueReset(EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS cEnv, ProdQueueType qType);
/// <summary>
/// Reset coda del tipo richiestoversione Async...
/// </summary>
/// <param name="cEnv">Environment richiesto</param>
/// <param name="qType">Tipo coda</param>
/// <returns>True se resettato con successo</returns>
Task<bool> QueueResetAsync(EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS cEnv, ProdQueueType qType);
/// <summary>
/// Rimette un run un singolo job eliminando da coda Run e mettendo in coda waiting
/// </summary>
/// <param name="cEnv">Environment richiesto</param>
/// <param name="codJob">Cod Job da resettare</param>
/// <returns>True se resettato con successo</returns>
Task<bool> ReRunJobAsync(EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS cEnv, string codJob);
/// <summary>
/// Reset coda running (riaccoda job su waiting)...
/// </summary>
/// <param name="cEnv">Environment richiesto</param>
/// <returns>True se resettato con successo</returns>
Task<bool> ResetRunningAsync(EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS cEnv);
/// <summary>
/// Verifica un job in una coda, se trovato lo "avanza" a fatto
/// </summary>
/// <param name="cEnv">Environment richiesto</param>
/// <param name="codJob">Chiave da cercare x avanzarla</param>
/// <param name="qType">Coda di default a run --> done</param>
/// <returns>True se avanzato con successo</returns>
Task<bool> SetDoneAsync(EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS cEnv, string codJob, ProdQueueType qType = ProdQueueType.running);
/// <summary>
/// Esegue avanzamento nella coda logica tra wait/run/done se possibile...
/// </summary>
/// <param name="hashKey">Chiave hash del contenuto richiesta RUID</param>
/// <returns></returns>
Task UpdateQueueAsync(EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS cEnvir, string hashKey);
#endregion Public Methods
}
}