Mostrando postagens com marcador Configurações. Mostrar todas as postagens
Mostrando postagens com marcador Configurações. Mostrar todas as postagens

quarta-feira, 1 de outubro de 2014

PARTE 2 -Manipulando dados do Preactor - Treinamento Preactor

Nessa segunda parte do treinamento iremos aprender a ler e escrever dados nas tabelas do Preactor utilizando a API do Preactor. Para essa parte do treinamento eu preciso que você faça download do modelo que iremos utilizar, para isso clique aqui.

Faça Download do arquivo "Preactor.prtdf" e o coloque na pasta do modelo que estamos trabalhando (C:\Users\Public\Documents\Preactor Configurations\Preferred Sequence (400 & 500 APS) v11.2).

O que há de diferente nesse arquivo é uma nova tabela que foi criada de nome Apontamento, ela possui a seguinte estrutura:
Apontamento,,0,600:
   Number,0,INTEGER,
      PRIMARY KEY
      HIDDEN:
   Ordem,"",STRING,
      FREE FORMAT (30):
   Recurso,"",STRING,
      FREE FORMAT (30):
   Status,"1",STRING,
      FREE FORMAT (30):
   Data de Início,-1,TIME,
      SHOW DATE:
   Data de Fim,-1,TIME,
      SHOW DATE:
   Import Marker,-1,INTEGER,
      DIALOG LEVEL 99
      DIALOG ONLY
      READ ONLY
      IMPORT MARKER;


O que podemos aprender ao ver o código da tabela:

Cabeçalho: "Apontamento,,0,600:"
Table: Apontamento
Total de Registros permitido pela tabela: 600
Fields: Number, Ordem, Recurso, Status, Data de Início, Data de Fim, Import Marker;

Iremos utilizar essas informações para podermos ler e gravar dados na tabela Apontamento.

Abra o Preactor para que as alterações do arquivo "preactor.prtdf" sejam incorporadas ao modelo.

Clique em sim.



Criando um novo registro, lendo e escrevendo dados no Preactor

Esse nosso primeiro contato com o API da Preactor será em torno de três funções básicas que são responsáveis por grande parte de nosso trabalho ao customizar um software, Ler dados, escrever e Criar novos registros. 

A sintaxe é bem simples, vejam os código logo abaixo:

public int Run(ref PreactorObj preactorComObject, ref object pespComObject)
        {
            IPreactor preactor = PreactorFactory.CreatePreactorObject(preactorComObject);
            
            //CRIAR UM NOVO REGISTRO NA TABELA DE APONTAMENTOS
            int record = preactor.CreateRecord("Apontamento");
            
            //ESCREVER NA TABELA APONTAMENTOS
            preactor.WriteField("Apontamento", "Ordem", record, "ORD-001");
            //obs:
            //A Função WriteField possui 4 parametros básicos
            // 1º - Tabela, 
            // 2º - Campo da tabela(Field), 
            // 3º - Numero do Registro, 
            //4 - Valor que vamos escrever no banco de dados

            preactor.WriteField("Apontamento", "Recurso", record, "Packing Line 2");
            preactor.WriteField("Apontamento", "Status", record, "Iniciada");
            preactor.WriteField("Apontamento", "Data de Início", record, new DateTime(2000,10,01,11,00,00));
            preactor.WriteField("Apontamento", "Data de Fim", record, new DateTime(2000, 10, 01, 12, 30, 00));
            //OBSERVAÇÃO, OS CAMPOS Number, e Import Marker são de uso do Preactor, 
            //não precisamos preencher esses campos;

            //VAMOS SALVAR OS DADOS NA TABELA DO PREACTOR

            preactor.Commit("Apontamento");
            return 0;
        }



Para ler os dados Gravados na tabela iremos utilizar duas funções, uma para contar o número total de registros da tabela e a outra para ler os dados da tabela.
  public int Lendo(ref PreactorObj preactorComObject, ref object pespComObject)
        {
            IPreactor preactor = PreactorFactory.CreatePreactorObject(preactorComObject);

            //CRIAR UM NOVO REGISTRO NA TABELA DE APONTAMENTOS
            int count = preactor.RecordCount("Apontamento");

            IList ordens = new List();
            //VAMOS LER TODAS AS ORDENS E GRAVAR SEU VALOR NA LISTA
            for (int record = 1; record <= count; record++)
            {
                //VAMOS LER OS DADOS DA TABELA (parametros: tabela, campo, número do registro)
                string ordem = preactor.ReadFieldString("Apontamento", "Ordem", record);
                ordens.Add(ordem);
                //OS DADOS SÃO SALVOS DE FORMA SEQUENCIAL, MESMO EXCLUINDO
                //UM REGISTRO DO MEIO DA FILA, A FILA É REORDENADA
                //NÃO DEIXANDO BURRACOS

            }
            MessageBox.Show("O número de registros lidos:" + ordens.Count());
            return 0;
        }



Outras funções de Manipulação de dados:


public void DeletarRegistro(IPreactor preactor, int record)
{
            //EXCLUI UM ÚNICO REGISTRO
            preactor.DeleteRecord("Apontamento", record);

            //PARA LIMPAR A TABELA EXCLUINDO TODOS OS REGISTROS
            preactor.Clear("Apontamento");
}


Mas para frente abordaremos como busca uma string dentro de um campo de uma tabela.



WorkShop 01


Faça uma função que importe um arquivo CSV (download arquivo CSV ) de apontamentos, e salve os dados na tabela "Apontamento" do Preactor. Mas antes de salvar limpe sempre a tabela.

tente fazer o workshop sem olhar a resposta (workShop 01)

segunda-feira, 29 de setembro de 2014

Treinamento Preactor APS – Interface de customização API

Para quem não sabe o que é o Preactor:

O Preactor é um sistema avançado para planejamento e sequenciamento do Produção. Sua função é distribuir as ordens de produção ao longo do tempo, levando em consideração N variáveis que possam interferir no processo de produção do produto final.

Os softwares APS são ferramentas especializadas em soluções avançadas de planejamento e programação de operações, capazes de levar em consideração, praticamente todas as variáveis e restrições inerentes ao ambiente produtivo, gerando planos de produção viáveis e factíveis.

O que veremos neste treinamento?

O objetivo desse treinamento é dar orientação básicas sobre o API de desenvolvimento da Preactor. Para isso iremos trabalhar os seguintes tópicos:
  • ·         Funções de Leitura e escrita;
  • ·         Criando Scripts de Integração;
  • ·         Gerando Relatórios para o Preactor;
  • ·         Criando Regras de Sequenciamento personalizadas;

O Preactor está na versão 12 sp1 mas como essa versão está apresentando alguns bugs, o treinamento estará focado na versão mais estável do Preactor 11 sp 2, mas se você preferir, poderá utilizar a versão mais nova do sistema sem grandes problemas.

NOTA, os bugs da versão 12.1 encontrados são:

  • ·         Falha na função TestOperation, entra em loop infinito quando há ordens com quantidade zero sequenciados ou se o testeOP for realizado nessa ordem;
  • ·         Falha na Função GetProcessQuantity, entra em loop infinito quando há ordens com quantidade zero sequenciados ou se o testeOP for realizado nessa ordem;
  • ·         Falha na Função FindMathRecord, Ela não encontra o valor buscado quando o campo que estamos realizando a busca for uma EVALUATE field;
  • ·         Estouro de Memória: Em alguns casos o mal uso de funções recursivas tem causado estou de memória física e o software é fechado;


Requisitos do sistema:

  • SQL Server Express 2008 R2 ou superior – Download
  • Preactor 11.2 – Download
  • Visual Studio Express 2008 ou Superior – Download

Links para download das versões mais recentes do Preactor:



Agora vamos ao que interessa:

PARTE 1 - Configurando o ambiente de trabalho;
PARTE 2 - Lendo e escrevendo dados nas tabelas do Preactor;
PARTE 3 - Buscando e Atualizando dados do Preactor;
PARTE 4 - Manipulando o quadro de Gantt e Criando uma regra de sequenciamento Personalizada - Treinamento API Preactor;