O Preactor já faz isso muito bem, pois possui inúmeras regras de sequenciamento Padrão: Minimização de Setup, Sequencia Preferida, Regras APS para frente, para trás, por prioridade, por data de entrega.
Mas alguns empresas possuem particularidades que não são atendidas por essas regras, por isso a necessidade de desenvolver um algorítimo que interaja com o Preactor sequenciando as ordens de forma a atender essas particularidades.
O intuito desse tutorial não é te tornar um expert em regras de sequenciamento, e sim abrir sua cabeça sobre o que pode ser feito e através das funções que conhecerá. Com esse conhecimento você poderá montar sua própria regra de sequenciamento dentro do Preactor.
Para essa parte do treinamento você irá precisar baixar o modelo workshop 03
Funções PlanningBoard Preactor
A biblioteca PlanningBoard do Preactor é um grupo de funções que permitem o programador interagir com o Gráfico de Gantt. Na PlanningBoard que estão contidas as funções de sequenciamento de ordens, manipulação de calendários, movimentar da linha de tempo do Preactor, além de outras.
Vamos aprender então alguns funções básicas do PlanningBoard:
Instanciando a classe:
IPreactor preactor = PreactorFactory.CreatePreactorObject(preactorComObject);
//criando uma instancia da classe
IPlanningBoard planning = preactor.PlanningBoard;
Função para mover a linha do tempo do Preactor:
IPlanningBoard planning = preactor.PlanningBoard;
//POSICIONA A LINHA DO TEMPO EM 02/10/2014 14:30
planning.TerminatorTime = new DateTime(2014,10,02,14,30,0);
Sequenciando todas as Desprogramadas:
//SEQUENCIAMENTO PARA FRENTE
planning.SequenceAll(SequenceAllDirection.Forwards, SequencePriority.Default);
//SEQUENCIAMENTO PARA FRENTE POR DATA DE ENTREGA
planning.SequenceAll(SequenceAllDirection.Forwards, SequencePriority.DueDate);
//SEQUENCIAMENTO PARA FRENTE POR ORDEM DE CRIAÇÃO DAS ORDENS
planning.SequenceAll(SequenceAllDirection.Forwards, SequencePriority.FileOrder);
//SEQUENCIAMENTO PARA FRENTE POR PRIORIDADE
planning.SequenceAll(SequenceAllDirection.Forwards, SequencePriority.Priority);
//SEQUENCIAMENTP PARA FRENTE POR PRIORIDADE REVERSA
planning.SequenceAll(SequenceAllDirection.Forwards, SequencePriority.ReversePriority);
//SEQUENCIAMENTO PARA FRENTE POR CARGA/PESO
planning.SequenceAll(SequenceAllDirection.Forwards, SequencePriority.Weight);
//TODAS ESSES TIPOS DE SEQUENCIAMENTO TAMBÉM PODEM SER APLICADOS PARA
//SEQUENCIAMENTO PARA TRÁS, BASTA ALTERAR O PARÂMETRO 1 DA FUNÇÃO
planning.SequenceAll(SequenceAllDirection.Backwards, SequencePriority.Default);
Desprogramar, ou desalocar as ordens do Gantt:
//TODAS ESSES TIPOS DE SEQUENCIAMENTO TAMBÉM PODEM SER APLICADOS PARA
//SEQUENCIAMENTO PARA TRÁS, BASTA ALTERAR O PARÂMETRO 1 DA FUNÇÃO
planning.SequenceAll(SequenceAllDirection.Backwards, SequencePriority.Default);
//DESPROGRAMAR TODAS AS ORDENS QUE ESTÃO DENTRO DO INTERVALO DE 2 MESES APÓS O TERMINADOR
planning.UnallocateAll(planning.TerminatorTime, planning.TerminatorTime.AddMonths(2), OperationReferencePoint.ChangeStart);
//DESPROGRAMAR UMA ORDEM, E TODAS SUAS OPERAÇÕES
planning.UnallocateOperation(10, OperationSelection.AllOperations);
//DESPROGRAMAR APENAS A OPERAÇÃO COMPREENDIDA PELO REGISTRO 10
planning.UnallocateOperation(10, OperationSelection.ThisOperation);
Sequenciar uma única operação ou Ordem:
//SEQUENCIAR TODAS AS OPERAÇÕES DA ORDEM 10 PARA FRENTE EM 01/01/2000 14:30
var data = new DateTime(2000, 01, 01, 14, 30, 0);
planning.SequenceOperation(10, SequenceOperationSelection.AllForwards, data);
//SEQUENCIAR APENAS A OPERAÇÃO 10 EM 01/01/2000 14:30
planning.SequenceOperation(10, SequenceOperationSelection.ThisOperation, data);
WorkShop 03
Com base nas funções que você aprendeu até o momento utilize o modelo do Workshop 03 e crie uma regra de sequenciamento personalizada.
Sua regra de sequenciamento deve ler o campo "Atributo 2" de cada ordem e sequenciar as operações de acordo com a sequencia de cadastro da tabela "Atributo 2", que segue a seguinte ordem:Regra 01, Regra 02, Regra 03, regra 04;
Explicando melhor: leia o campo "Atributo 2" das ordens, e sequencie
1º todas as ordens "Regra 01",
2º todas as ordens "Regra 02", e assim por diante.
Mãos a obra e boa sorte.
dúvidas: besaleel@msn.com