Popis procesu importu dat z K2 do xTrace

Název projektu: MES xTrace
účel dokumentu Popis procesu importů dat z K2 do xTrace
Datum: 7.12.2022
Autor: Tomáš Plánka
Verze dokumentu: 1
Poslední změna
Stav dokumentu: Dokončeno

Historie změn

Datum Task Popis

Popis procesu importu dat z K2 do xTrace

Historie změn

Základní informace

Seznam dat, které importujeme

Pomocné tabulky / data

Nastavení SQL Job agentů

Import výrobků a materiálů

Nastavení SQL Job agenta Import K2MES

Import výrobků a materiálů z K2DB do K2MES

Struktura tabulky K2MES.dbo.Article

SQL dotaz do K2DB

Import výrobků a materiálů z K2MES do xTrace

Import šarží materiálů z K2DB do K2MES

Struktura tabulky K2MES.dbo.Batch

SQL dotaz do K2DB

Struktura tabulky K2MES.dbo.StockBatch

SQL dotaz do K2DB

Import šarží materiálů z K2MES do xTrace

Import výrobních objednávek

Nastavení SQL Job agenta Import K2MES JobCards

Princip importu

Popis tabulky K2MES.dbo.JobCard

Zařazení nových nebo změněných JobCard do fronty je zpracování

Zpracování JobCard ve frontě a import do xTrace

Proces importu výrobní objednávky z K2MES do xTrace

Import výrobního postupu pro JobCard

Základní informace

Seznam dat, které importujeme

Typ dat Zdroj K2DB Umístění v K2MES Agent
Výrobky a materiály [K2_Mikro].[dbo].[Article] dbo.Article Import K2MES
Šarže materiálů [K2_Mikro].[dbo].[Batch] dbo.Batch Import K2MES
Šarže materiálů - Stock [K2_Mikro].[dbo].[StockBatch] dbo.StockBatch Import K2MES
Výrobní objednávky [K2_MIKRO].[dbo].[jobcard]
K2_MIKRO.dbo.BusinessYearAndTaxGroup
K2_MIKRO.dbo.BOOKCONFIGURATION
K2_MIKRO.dbo.Articl
dbo.JobCard Import K2MES JobCards
Výrobní objednávky – postupy [K2_Mikro].[dbo].[JobCardOperation] dbo. jobcardOperation Import K2MES JobCards
Výrobní objednávky – kusovníky [K2_Mikro].[dbo].[JobCardItem] jobcardItem_rev1 Import K2MES JobCards

Pomocné tabulky / data

Typ dat Zdroj K2DB Umístění v K2MES Agent
Zdroje pro Výrobní objednávky – postupy [K2_Mikro].[dbo].[JobCardResource] dbo.jobcardResource Importuje se na vyžádání při importu JobCard
Routovací tabulka Slouží pro import postupu, nahrazuje zdroj (pracoviště) K2 za xTrace zdroj, když K2 zdroj neexistuje v xTrace nebo chceme vyrábět jinde.

Nastavení SQL Job agentů

Název Kdy se pouští Popis
Import K2MES Každou hodinu Import výrobků a materiálů a šarží materiálů z K2 do xTrace
Import K2MES JobCards Každou hodinu Import výrobních objednávek z K2 do xTrace

Import výrobků a materiálů

Import výrobků a materiálů zajišťuje SQL Job agent Import K2MES, který má několik úloh

Nastavení SQL Job agenta Import K2MES

Jednotlivé úlohy se spouští v daném pořadí.

Pořadí Název úlohy Popis Skript
1. MERGE Articles FROM K2DB to K2MES Provede import výrobků a materiálů z K2DB do K2MES EXEC dbo.sp_Import_K2_Articles
2. MERGE Articles from K2MES to xTrace Provede import výrobků a materiálů z K2MES do produkční databáze xTrace EXEC dbo.sp_Import_XT_Products
3. MERGE Batches from K2DB to K2MES Provede import šarží materiálů z K2DB do K2MES EXEC [dbo].[sp_Import_K2_Batches]
4. MERGE StockBatches from K2DB to K2MES Provede import šarží počty(zásoby) materiálů z K2DB do K2MES EXEC [dbo.][sp_Import_K2_StockBatches]
5. MERGE Batches from K2MES to xTrace Provede import šarží materiálů z K2MES do produkční databáze xTarce EXEC dbo.sp_Import_XT_InputBatches

Import výrobků a materiálů z K2DB do K2MES

Provádí uložená procedura K2MES.dbo.sp_Import_K2_Articles, kterou spouští SQL Job agent v “Import K2MES” jako první. Uložená procedura pomocí OPENQUERY načte data artiklů z K2DB do pomocné tabulky a pokud něco načetla tak v cílové tabulce K2MES.dbo.Article data smaže a nakopíruje nová načtená z K2.

Struktura tabulky K2MES.dbo.Article

Název Typ Popis Zdroj v K2DB
Id INT ID artiklu v K2 – neimportuje se K2_Mikro.dbo.Article.Id
Group NVARCHAR (12) Skupina – neimportuje se K2_Mirko.dbo.Article.Group
Abbr NVARCHAR (30) Kód výrobku - unikátní označení. Importuje se do xTrace dbo.Product.ProductCD K2_Mikro.dbo.Article.Id + „-„ + K2_Mikro.dbo.Article.Abbr
Abbr2 NVARCHAR (30) Číslo výrobku v K2 – neimportuje se K2_Mikro.dbo.Article.Abbr2
Name NVARCHAR (200) Název výrobku. Importuje se do xTrace dbo.Product.Name K2_Mikro.dbo.Article.Name
ArticleCategoryId INT Kategorie. Když je 394 nebo 397 jedná se o výrobek (výrábí se) jinak je to materiál K2_Mikro.dbo.Article. ArticleCategoryId
EX_OrdMult INT Počet DPS na panelu. Je-li = 0 pak se nejedná o panel a v xTrace je nastaven dbo.Product.IsPanel=0 jinak se jedná o panel dbo.Product.IsPanel = 1 K2_Mikro.dbo.Article. EX_OrdMult
MSL NVARCHAR (16) MSL třída - Importuje se K2_Mikro.dbo.Article. EX_Odolnost
Ex_PanRow INT Počet řádků na panelu pro vizualizaci. K2_Mikro.dbo.Article. EX_PanRow
Ex_PanCol INT Počet sloupců na panelu pro vizualizaci K2_Mikro.dbo.Article. EX_PanCol

SQL dotaz do K2DB

SELECT [Id],[Group],[Abbr],[Abbr2],[Name],[ArticleCategoryId],[EX_OrdMult],[EX_Odolnost] as MSL,[Ex_PanRow],[Ex_PanCol] FROM [K2_Mikro].[dbo].[Article] o WITH(NOLOCK)

Import výrobků a materiálů z K2MES do xTrace

Provádí uložená procedura K2MES.dbo.sp_Import_XT_Products, kterou spouští SQL Job Agent “Import K2MES” jako druhou v pořadí. Uložená procedura z tabulky K2MES.dbo.Article provede import výrobků a materiálů do xTrace v několika krocích

Tabulka tříd MSL ke dni 7.12.2022

Parametr DryerTimeLeft je hodnota udávaná v minutách, jak dlouho může být materiál mimo sušičku.

Import šarží materiálů z K2DB do K2MES

Provádí uložená procedura K2MES.dbo. sp_Import_K2_Batches, kterou spouští SQL Job agent v “Import K2MES” jako třetí v pořadí. Uložená procedura pomocí OPENQUERY načte data šarží materiál K2DB do pomocné tabulky a pokud něco načetla tak v cílové tabulce K2MES.dbo.Batch data smaže a nakopíruje nová načtená z K2.

Dále se spustí pomocí OPENQUERY dotaz, který načte informace z StockBatch a nakopíruje je do tabulky K2MES.dbo.StockBatch, ten je v pořadí čtvrtý.

Struktura tabulky K2MES.dbo.Batch

Název Typ Popis Zdroj v K2DB
Id INT ID šarže v K2 – neimportuje se K2_Mikro.dbo.Batch.Id
ArticleId INT Skupina – neimportuje se K2_Mirko.dbo.Batch.ArticleId
Abbr NVARCHAR (30) Kód šarže- unikátní označení k ArticleId. Importuje se do xTrace dbo.InputBatch.BatchCD K2_Mikro.dbo.Batch.Abbr
KindId NVARCHAR (2) Neimportuje se K2_Mikro.dbo.Batch.KindId
InputDate DATETIME Datum a čas založení / příjem na sklad? K2_Mikro.dbo.Batch.InputDate
OutputDate DATETIME K2_Mikro.dbo.Batch.OutputDate
ChangedOn DATETIME Datum a čas poslední změny v K2 K2_Mikro.dbo.Batch.ChangedOn
RoutingVariantId INT Neimportuje se K2_Mikro.dbo.Batch.RoutingVariantId
Timestamp DATETIME Časová značka Neimportuje se

SQL dotaz do K2DB

SELECT [Id],[ArticleId],[Abbr],[KindId],[InputDate],[OutPutDate],[ChangedOn],[RoutingVariantId],[TimeStamp] FROM [K2_Mikro].[dbo].[Batch] WITH(NOLOCK)

Struktura tabulky K2MES.dbo.StockBatch

Název Typ Popis Zdroj v K2DB
ArticleId INT ID materiálu v K2. Tabulka K2MES.dbo.Article.Id K2_Mikro.dbo. StockLevelDetail.ArticleId
BatchId INT ID šarže materiálu v K2. Tabulka K2MES.dbo.Batch.Id K2_Mikro.dbo. StockLevelDetail.BatchId
Abbr NVARCHAR (30) Kód šarže- unikátní označení k ArticleId. Importuje se do xTrace dbo.InputBatch.BatchCD K2_Mikro.dbo.Batch.Abbr
Available money Dostupné množství K2_Mikro.dbo. StockLevelDetail.Available
Timestamp DATETIME Časová značka Neimportuje se
InputDate DATETIME Datum a čas založení / příjem na sklad? K2_Mikro.dbo.Batch.InputDate
OutputDate DATETIME K2_Mikro.dbo.Batch.OutputDate
ChangedOn DATETIME Datum a čas poslední změny v K2 K2_Mikro.dbo.Batch.ChangedOn

SQL dotaz do K2DB

Import šarží materiálů z K2MES do xTrace

Provádí uložená procedura K2MES.dbo.sp_Import_XT_InputBatches, kterou spouští SQL Job Agent “Import K2MES” jako pátou v pořadí. Uložená procedura z tabulky K2MES.dbo.Batch a K2MES.dbo.StockBatch provede import šarží materiálů do xTrace.

Podmínky

Uložená procedura provede MERGE, tedy pokud šarže neexistuje tak ji do xTrace založí a vyplní tyto parametry

Když šarže v xTrace existuje tak jen aktualizuje v xTrace tyto parametry:

Import výrobních objednávek

Import výrobků a materiálů zajišťuje SQL Job agent Import K2MES JobCards.

Nastavení SQL Job agenta Import K2MES JobCards

Jednotlivé úlohy se spouští v daném pořadí.

Pořadí Název úlohy Popis Skript
1. Import new or changed JobCards from K2DB to K2MES Importuje nové nebo změněné JobCards z K2DB do K2MES EXEC [dbo].[sp_Import_K2_JobCards]
2. Import JobCards from K2MES to xTrace Importuje nové nebo změněné výrobní objednávky z K2MES do xTrace

Princip importu

Import výrobních objednávek je rozdělen do dvou funkčních na sobě nezávislých celků.

  1. První úloha importuje samotné JobCard z K2DB a řadí se do fronty ke zpracování.
  2. Druhá úloha kontroluje frontu a pokud jsou zde JobCard, které nejsou ještě vyřízené tak tyto nové požadavky zpracuje a provede import JobCard do xTrace a zapíše výsledek zpět do „fronty“ – aby se vědělo jak to dopadlo (OK nebo nějaká chyba). V případě chyby umí poslat i alarm (email) adminovi, aby věděl, že něco nedopadlo a mohl se na to podívat a provést nápravu – reimport.

Popis tabulky K2MES.dbo.JobCard

V tabulce je jen popis parametrů, které využíváme pro import do xTrace.

Název Popis
OID Klíč záznamu
Pruvodka Číslo výrobní objednávky – viditelní všem. Importuje se bez lomítek „/“
Description Popis
ArticleId ID výrobku
Quanity Požadované množství vyrobit
ChangedOn Datum a čas změny
CreatedOn Datum a čas vytvoření
RID ID JobCard
ImportState Stav importu do xTrace. 0=nový-čeká ve frontě, 1=import OK, 2=probíhá nebo nedokončený import, jiné číslo=chyba
ImportMessage Zpráva importu. Pokud je nějaká chyba – import neproběhl, je zde zapsán důvod

Zařazení nových nebo změněných JobCard do fronty je zpracování

První úloha má za úkol z K2DB importovat nové / případně změněné JobCards – výrobní objednávky a uložit je v K2MES.dbo.JobCards do “fronty” k dalšímu zpracování.

Vše provádí uložení procedura sp_Import_K2_JobCards, která má k sobě pomocnou tabulku dbo.ImportState, kde je jeden záznam a parametr LastJobCardImportDT, kde si procedura pamatuje, kdy naposledy prováděla z K2 tento import. Když není parametr nastaven = NULL tak je nastaven poslední import na 1.12.2022 (můžeme změnit dle potřeby s ohledem na spuštění importů na vhodnější datum)

Procedura pomocí OPENQUERY načte z K2 dle podmínek v něm všechny JobCards do pomocné tabulky.

Následně provede INSERT INTO K2MES.dbo.JobCard jen ty záznamy z pomocné tabulky, které vyhovují této podmínce WHERE CreatedOn >= @LastJobCardImportDT OR ChangedOn >= @LastJobCardImportDT

Tedy vloží se jen ty záznamy, které byly vytvořeny nebo změněny od posledního importu.

Každý nový záznam v tabulce K2MES.dbo.JobCard má parametr ImportState=0, což znamená, že výrobní objednávka je zařazena do fronty a bude zpracována jinou úlohou. Když dojde k úspěšnému zpracování – importu výrobní objednávky do xTrace je nastaven ImportState=1, případně neúspěchu je tam vyšší číslo jak 1 a v ImportMessage se pak dozvíme důvod neúspěšného importu.

Uložená procedura K2MES.dbo. sp_Import_K2_JobCards vytváří pouze do K2MES.dbo.JobCard nové záznamy!!

Tímto je také zaručeno, že když už se nějaká výrobní objednávka importovala a dojde k její změně, pak je zařazena “znovu” do fronty a bude zpracována. Historicky, pak pokud by se tabulka K2MES.dbo.JobCard nikdy nemazala uvidíme kolikrát byl požadavek na import jedné VO a kolik jich bylo úspěšných...

Zpracování JobCard ve frontě a import do xTrace

Proces importu výrobní objednávky z K2MES do xTrace

Uložená procedura dbo.sp_Import_XT_Job zajišťuje import jedné výrobní objednávky a provede tyto úkony

Import výrobního postupu pro JobCard z K2MES

Importní routovací tabulka

Při importu operací (postupu) z K2MES do xTrace se vyžívá tzv. routovací tabulka, pomocí které lze nastavit to, aby operace z postupu K2, která má nastavený nějaký zdroj (skupina pracovišť) byla do xTrace naimportována a byl ji přiřazen jiný zdroj (jiná skupina pracovišť). Dále je také možné nastavit, aby se přidala navíc jedna či více operací na různé zdroje. Uvedeme níže na příkladu.

Struktura tabulky

Chyby při importu výrobních objednávek

Když nejde výrobní objednávka z nějakého důvodu naimportovat je nastaven v JobCard ImportState na číselnou hodnotu odpovídající chybě a ImportMessage obsahuje text zprávy, proč JobCard nešel naimportovat.

Níže je uveden seznam všech možných ImportState

ImportState ImportMessage Popis
0 NULL Nový záznam, který čeká na import do xTrace
1 NULL nebo OK nebo jiná zpráva Import proběhl OK, pokud je uveden ImportMessage, tak jeto pouze informativní zpráva – nejedná se o chybu
9000 JobCard OID= neexistuje! Pokud o import neexistující JobCard podle hodnoty OID=???
9001 Výrobek ??? neexistuje v xTrace. Job nelze vytvořit. Výrobek (Id+Abbr) neexistuje v xTrace. Pokoušíte se naimportovat JobCard pro výrobek, který není v xTrace zaveden v číselníku produktů
9002 Některé skupiny pracovišť (?) v postupu neexistují v xTrace. Postup nelze importovat. Chyba při validaci postupu JobCard. Některé resource v xTrace jsou to skupiny pracovišť neexistují v xTrace. V závorce jsou uvedené, které to jsou. Pokud je tam „?“ tak JobCard nemá pro danou operaci resource
9003 Některý materiál/výrobek (?) neexistuje v xTrace. Kusovník nelze importovat. Chyba při validaci kusovníku JobCard. Nělteré položky kusovníku nemají zaveden v xTrace materiál. V závorce jsou uvedené, které to jsou.
9004 Některé operace (?) v kusovníku nejsou v xTrace. Kusovník nelze importovat. Chyba při validaci kusovníku JobCard. Některé operace kusovníku nejsou v postupu K2
9005 Chyba při vytváření výrobní objednávky! Blíže nespecifikovaná chyba při vytváření výrobní objednávky. Nutné aby podpora BCZ tento stav prověřila.
9006 Některé operace (?) v postupu nemají v K2 resource. Chyba při validaci postupu pro JobCard. Některé operace nemají resource. V závorce je RID operace, která nemá resource