Gente se houver dúvidas basta me escrever.
Segue logo baixo os arquivos contendo as resoluções do workshop 03.
Clique aqui para efetuar o download dos arquivos.
Mostrando postagens com marcador APS. Mostrar todas as postagens
Mostrando postagens com marcador APS. Mostrar todas as postagens
quinta-feira, 9 de outubro de 2014
Resposta do WorkShop 03
Marcadores:
.Net,
API,
API Preactor,
APS,
C#,
Customizar Preactor C#,
regra personalizada,
Treinamento,
tutorial
quinta-feira, 2 de outubro de 2014
workShop 02 - Treinamento Preactor API
Conforme o primeiro workshop a solução do problema será exposta em tópicos, num formato de passo-a-passo, ok?
segue a codificação do Botão:
; ---------------------------------------------------------------------------
; Edit Apontamentos
; ---------------------------------------------------------------------------
;
EDIT_Apontamentos : PREDIT.EXE,
"/FMT:Apontamento" /NDS
"/ActiveX:Atualizar Dados da Tabela:PESP.EventHandler:RunScriptByName:AtualizaApontamento",
Edit Apontamento,
Preactor Database Editor,
Foreground,
ALWAYS:{RETURN};
;
1º - Criar uma nova classe workshop02;
2º - Copiar e colar o método de ler o arquivo CSV, e altera-lo para atender o layout do novo arquivo CSV ( AtualizaOrdens.csv);
private IList getApontamentosByFileCSV(string pathFile)
{
try
{
IList apos = new List();
if (!File.Exists(pathFile))
{
MessageBox.Show("O arquivo de Apontamento não foi encontrado.");
return new List();
}
StreamReader rd = new StreamReader(pathFile, Encoding.Default);
try
{
var count = 0;
while (!rd.EndOfStream)
{
count++;
var linha = rd.ReadLine();
if (count == 1) continue;
if (string.IsNullOrEmpty(linha)) continue;
var colunas = linha.Split(';');
Apontamento iten = new Apontamento();
iten.Ordem = colunas[0];
iten.Recurso = colunas[1];
iten.Status = colunas[2];
apos.Add(iten);
}
}
catch (Exception)
{
throw;
}
finally
{
rd.Close();
}
return apos;
}
catch (Exception ex)
{
throw new Exception("Falha ao recuperar os dados do arquivo CSV:"
+ Environment.NewLine + ex.Message);
}
}
3º - Criar o método de interface com o Preactor, e fazer a função que atualize os dados da tabela de "Apontamento";
public int AtualizaApontamento(ref PreactorObj preactorComObject, ref object pespComObject, ref string arquivo)
{
IPreactor preactor = PreactorFactory.CreatePreactorObject(preactorComObject);
try
{
preactor.DisplayStatus("Atualizar Apontamentos", "Lendo arquivo CSV...");
IList itens = getApontamentosByFileCSV(arquivo);
preactor.DestroyStatus();
if (itens.Count == 0)
{
MessageBox.Show("O arquivo está em branco.");
return 0;
}
preactor.DisplayStatus("Atualizar Apontamentos", "Aplicando Atualizações");
var total = itens.Count;
var count = 0;
preactor.UpdateStatus(count, total);
foreach (var iten in itens)
{
count++;
preactor.UpdateStatus(count, total);
//BUSCAR A ORDEM NA TABELA DE APONTAMENTOS
var record = preactor.FindMatchingRecord("Apontamento", "Ordem", 0, iten.Ordem);
if(record < 0)
continue;
//SÓ AS ORDENS QUE RECEBERAM UM STATUS CONHECIDO
switch (iten.Status)
{
case "Iniciada":
preactor.WriteField("Apontamento", "Recurso", record, iten.Recurso);
preactor.WriteField("Apontamento", "Status", record, iten.Status);
break;
case "Liberada":
preactor.WriteField("Apontamento", "Recurso", record, iten.Recurso);
preactor.WriteField("Apontamento", "Status", record, iten.Status);
break;
case "Cancelada":
preactor.DeleteRecord("Apontamento", record);
break;
case "Finalizada":
preactor.DeleteRecord("Apontamento", record);
break;
}
}
MessageBox.Show("Seus registros foram atualizados com sucesso!");
preactor.DestroyStatus();
}
catch (Exception ex)
{
preactor.DestroyStatus();
MessageBox.Show("Falha ao atualizar os registros de Apontamento: " + Environment.NewLine + ex.Message);
}
return 0;
}
4º - Criar um Botão para chamar a ação do workshop 02;
segue a codificação do Botão:
; ---------------------------------------------------------------------------
; Edit Apontamentos
; ---------------------------------------------------------------------------
;
EDIT_Apontamentos : PREDIT.EXE,
"/FMT:Apontamento" /NDS
"/ActiveX:Atualizar Dados da Tabela:PESP.EventHandler:RunScriptByName:AtualizaApontamento",
Edit Apontamento,
Preactor Database Editor,
Foreground,
ALWAYS:{RETURN};
;
5º - Criar a Ação Personalizada, dentro do Preactor;
6º - Testar nossa função;
Nesse workshop eu alterei o local de execução da função, não está dentro do quadro de Gantt conforme o workshop 01, isso para que você posso ver a flexibilidade do Preactor quanto a customizações.
A ação será chamada diretamente da tela e edição da tabela de "Apontamentos", em um menu de nome "Ferramentas".
Alguns comandos utilizados
preactor.DisplayStatus("Atualizar Apontamentos", "Aplicando Atualizações");
Exibe uma janela de Status sendo seu primeiro parâmetro o Título da Janela e o segundo o descritivo do Status;
preactor.UpdateStatus(count, total);
Atualiza o Status Bar que está contido na janela, sendo seu primeiro parâmetro andamento do status (inteiro), e o segundo numero que equivale a 100% do Status Bar, pode ser o número total de elementos de uma lista, ou Array, ou mesmo número de elementos de um tabela de banco de dados que estamos lendo;
preactor.DestroyStatus();
Fecha a janela de Status aberta pelo comando DisplaySTatus. Caso você abra um DisplayStatus e se esqueça de fechar, ao chamar sua ação ela irá manter a janela aberta causando um problema para o Preactor, deixado ele inoperante, e para restaurar o Preactor você precisará matar o processo (ctrl + alt + del) e restartar o Preactor.
Dica, por essa razão sempre que você utilizar o DisplayStatus se lembre de colocar dentro do Catch de sua função um DestroyStatus.
Arquivos do work02 para download.
Dúvidas besaleel@msn.com ou comente aqui.
Arquivos do work02 para download.
Dúvidas besaleel@msn.com ou comente aqui.
segunda-feira, 29 de setembro de 2014
Parte 1 – Configurando o ambiente de trabalho - Treinamento Preactor
Bem vamos começar a trabalhar? Para isso precisamos criar
nosso ambiente de trabalho, faça download dos itens necessários e instale-os
- · Guia de instalação do SQL Server – Clique aqui;
- · Guia de Instalação Preactor 11.2 – Clique Aqui;
- · Guia de Instalação Preactor 12.1 – Clique Aqui;
- · Guia de Instalação do Visual Studio – Clique Aqui;
Você poderá ter instalado em sua máquina mais de uma versão
do Preactor sem problemas, ok?
Configuração do Visual Studio
Ao instalar em sua máquina o Preactor ele disponibiliza uma
pasta chamada SDK, onde nela contém todos as bibliotecas que iremos utilizar
para desenvolver nossas funções.
Então para iniciarmos nossos trabalhos vamos até essa pasta,
que possivelmente está contida em:
- Computador 64x: C:\Program Files (x86)\Preactor International\Preactor11.2\SDK
- Computador 86x: C:\Program Files\Preactor International\Preactor11.2\SDK
Nessa pasta estará contidos 3 arquivos:
- · Guia de referencia da API Preactor (Preactor API Documentation.chm);
- · Templates para Visual Studio 2008 (VS2008 Templates.vsi)
- · Templates para Visual Stduio 2010 (VS2010 Templates.vsix)
Além de um pasta contendo as dll do Preactor,
que utilizaremos para acessar as funções do Preactor;
Para instalar os templates, basta dar um duplo clique encima do nome do template:
Next
Finish
Close
Gerando um Projeto para trabalhar com o Preactor
1º - Criando o Projeto no Visual Studio, com a linguagem C#;
2º - Escolher o template instalado do Preactor;
3º - Veja que ao criar o Projeto, ele já adicionou as bibliotecas do Preactor;
4º - Adicionando uma classe que irá fazer conexão do nosso projeto ao Preactor, essa conexão será realizada através do método Run da Classe;
5º - Classe "Action", é a classe de inteface entre o Preactor e o nosso projeto. Veja que o Método Run possui dois parâmetros, mas para frente se houver necessidade detalharemos mais sobre esses parâmetros;
6º - Configurações do Projeto
Bem, com isso nosso projeto está criado e pronto para iniciarmos nossos trabalhos junto ao Preactor. Para isso vamos escolher um modelo do Preactor que foi copiado para sua máquina ao instalar o Preactor.
Extraindo a Modelagem Preactor
Vá nos "Meus Documentos" de seu computador, entre na pasta "Preactor Configurations", "Preferred Sequence (400 & 500 APS) v11.2" e dê um duplo clique sobre o arquivo do modelo de nome "Preferred Sequence Example (400 & 500 APS).prpkg". Com isso o Preactor irá abrir uma tela para que você possa Instalar o modelo em sua máquina e usa-lo.
Olá Mundo
Com o Projeto devidamente configurado e o modelo extraído podemos criar nossa primeira interação entre o Preactor e o C#.Net;
- Adicione a Referencia em seu projeto system.windows.forms;
- crie uma MessageBox.Show("Olá Mundo!"); dentro do método Run da Classe "Action";
- Vamos Criar um botão no arquivo de configuração "Preactor.prmdf", que está localizado na Pasta do Modelo, "/ActiveX:Olá Mundo: PESP.EventHandler:RunScriptByName: OlaMundo"
- Vá no visual Studio, Menu Debug, "Starting Debugging", ou aperte a tecla "F5";
- Abra o modelo:
- Vamos configurar a Ação Olá Mundo, Vá no menu "Configuração" => "Scriprs de Eventos" => "Ações Personalizadas", clique em "Editar" => "Inserir", e preencha o formulário com os dados de seu Projeto:
8. Para finalizar vamos criar a chamada da Ação Personalizada pelo Botão "OlaMundo".Vá em "Configuração" => "Scriprs de Eventos" => "Scriprs de Eventos" => "Editar" => "Inserir" e preenche o formulário conforme imagem abaixo:
Para finalizar essa primeira parte de nosso tutorial, vamos no menu principal, e abrir o quadro de Gantt, e executar nossa ação:
Com isso finalizo essa primeira parte de nosso tutorial, até a próxima:
PARTE 3 - Buscando registros no Preactor;
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:
http://www.preactordownloads. com/installation/preactor/12_ 1_0_32140/x86/Preactor12.1.0. 32140-x86.exe
http://www.preactordownloads. com/installation/preactor/12_ 1_0_32140/x64/Preactor12.1.0. 32140-x64.exe
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;
Marcadores:
API Preactor,
APS,
Configurações,
curso,
Desenvolvimento,
framework,
integração,
Personalização,
Preactor,
SDK Preactor,
Treinamento,
tutorial
Assinar:
Postagens (Atom)


























