Introduktion
I denne artikel vil jeg vise, hvordan man integrerer et ThingWorx mashup direkte i Windchill for at gøre adgangen lettere for designeren. At designe innovative og konkurrencedygtige produkter kræver mere end nogensinde et enormt indblik i driftsmiljøet, produktionsprocesserne, leverandørernes kapaciteter, tidligere kvalitetspræstationer for blot at nævne nogle få. Heldigvis indsamler dagens virksomheder med IoT og stigende digitalisering tonsvis af information. Men hvordan giver man designeren den rette anvendelige information? At indsamle information fra flere kilder i ThingWorx mashups kan være en løsning.Forudsætninger
Integrationsprocessen kræver brug af HTTP iframe (inline frame – integrer et andet dokument inden i det nuværende HTML-dokument). Dog har processen en væsentlig begrænsning, som PTC sandsynligvis/håbefuldt forsøger at løse: Iframe-funktionaliteten inden for Windchill, dets højdestørrelse, er hårdkodet til 1200px. Så hvis mashup-indholdets størrelse er mere end 1200 px i højden, vil der være en scrollbar, og hvis mashup-indholdets størrelse er langt mindre end 1200 px i højden, kan resultatet se ret underligt ud sammenlignet med Windchill UI. På grund af dette ene problem, kan du forvente en masse justeringer og hvordan-ser-det-ud-cykler fra ThingWorx til Windchill og tilbage. En vigtig forudsætning for integration af ThingWorx mashup er, at brugeren, der udfører det, skal have administratorrettigheder på sitet i Windchill. Hvis du ikke har sådanne rettigheder, skal du måske få dem og læse videre bagefter. En anden vigtig forudsætning er at sikre, at ‘Tilpasningsværktøjer’ er aktiveret i Windchill. Du kan tjekke dette i browsersektionen. Hvis det ikke er aktiveret der, skal det aktiveres på siteniveau. For at gøre dette, fortsæt som følger:- Gå til Site -> Utilities -> (under Business Administration) Preference Manager
- Find Client Customization sektionen, højreklik, Set Preference, and sæt værdien til “Yes”.
- Opdater browseren.
Screenshot 1,2 – Tilpasningsværktøjer & Siteadgang
Screenshot 3 – Klienttilpasning i Præferencestyring
Nu hvor vi har alle forudsætningerne på plads, kan vi fortsætte med integrationsprocessen.Design og udvikl et mashup til at integrere i Windchill
I dette trin opretter du et mashup i ThingWorx. Baseret på min erfaring, bør du begynde med at fokusere på den ønskede funktionalitet af mashuppet og fokusere mindre på mashuppets design; det er vigtigt at have de nødvendige funktioner og at sikre, at alle tilladelser/adgangsrettigheder er på plads, og det grundlæggende layout er etableret. På grund af den 1200px hårdkodede grænse for iframe, bør det egentlige design kun finde sted, når du har integreret dit mashup i Windchill. For at give en hurtig demonstration vil jeg nu vise, hvordan man opretter et enkelt mashup med to etiketter og en knap og derefter integrerer det i Windchill. Dette mashup har kun én funktion, som er at vise en besked i label 2, når der trykkes på knappen.Screenshot 4 – Eksempel på Mashup i ThingWorx
Hvordan lader man Windchill vide, at man vil integrere et ThingWorx mashup?
Start Windchill-shellen og kald xconfmanager-kommandoen med følgende parametre:xconfmanager -s com.ptc.thingworxURL="http://server_name.domain1.com:XYZY/Thingworx/" -t codebase\wt.properties -p
s – source : ThingWorx platformens URL-placering; det er hvor vores ThingWorx-server er placeret; parameteren, som vi opretter, er com.ptc.thingworxURL
t – target: den vigtige fil wt.properties, som befinder sig i codebase-mappen
p: udbred ændringen
Verificer, at en parameter er tilføjet/ændret ved at tjekke værdien i filen site.xconf (Windchill rodmappe). Den er normalt i slutningen af filen.Screenshot 5 – parameter i site.xconf fil
Hvilken Windchill handlings-model skal man bruge?
Der er flere måder at gribe denne opgave an på. Den sædvanlige er at aktivere debug-funktionen i Windchill (tilføj &jcaDebug=true i slutningen af http-linket). I dette eksempel ønsker vi at indsætte en ny brugerdefineret fane på ‘part information’-siden og gøre den permanent.Screenshot 6 – Part Info page med jcaDebug aktiveret
Som du kan se, er handlingsmodellen, som vi skal tilsidesætte, partInfoPageTabSet. Fortsæt nu til Customization Utilities (vi aktiverede det i perquisites section) -> Tools og vælg Action Model fra listen over tilgængelige værktøjer. Søg derefter efter vores model af interesse.Screenshot 7,8,9 – Find handlingsmodellen for tilsidesættelse
Og klik på “Create Action”. Som jeg nævnte ovenfor, er der flere måder at gøre dette på, men denne tilgang fungerer bedst for mig.Opret Brugerdefineret Handling
Screenshot 10 – Kald “Create Action”
Bemærk: Hvis du ser på definitionsfilerne på billedet ovenfor, står der /config/actions/custom-actionModels.xml. Det er fordi jeg allerede har tilpasset denne model. I dit tilfælde kan det være, det peger på denne særlige fil eller ikke. Step 1. – Definer Egenskaber Felter, der skal udfyldes, er markeret som nødvendige. Indtast meningsfulde værdier.Screenshot 11 – ‘Create Action’ step 1.
Step 2. – Definer Avancerede Egenskaber Udfyld feltet Action URL med ptc1/twx?mashup=TestEmbeddingMashup. URLen ptc1/twx?mashup håndterer den URL-del, som vi introducerede med xconfmanager. Så, hvad vi rent faktisk gør, er at indtaste navnet på mashuppet, som vi gerne vil vise i Windchill. Der er nogle andre muligheder på denne form, som Window Type og Supported and Non Supported types. Du kan sætte Window Type til popup hvis du vil have mashuppet præsenteret i form af en popup. I vores tilfælde, siden vi integrerer direkte på siden, er dette felt tomt. Supported and Non-Supported types: Med denne parameter kan du finjustere synligheden af fanen. For eksempel kan vi forbyde, at denne fane er synlig, når brugeren gennemser Documents. I dette tilfælde vil vi sætte wt.doc.WTDocument i feltet Non Supported Types. Lad det være blankt for nu. Klik på ‘finish’, og så er det gennemført.Screenshot 12 – Brugerdefineret Action Model tilføjet.
Når du trykker på finish, sker der 2 ting. To filer, <wt home>/codebase/custom-actions.xml og <wt home>/codebase/custom-actionmodels.xml opdateres med tilsvarende data. Alle Action Models og handlinger, der er tilpasset eller opdateret, bør være angivet her. For det andet, bliver alle handlingernes definitioner genindlæst, så du bør i princippet kunne se og aktivere din nye fane.Screenshot 13,14 – custom-action.xml og custom-actionmodels.xml
Men ….?!?Screenshot 15 – Blokeret Indhold
Dette fører os til …Forudsætninger – Del II
HTML iframe-egenskaben er kendt som vidt brugt af hackere til session hijacking, dataindsamling og lignende. Denne teknik er kendt som clickjacking, og hvis du vil vide mere om problemet, er der masser af information på internettet. Det sidste, der skal gøres, er at “fortælle ThingWorx, at det er sikkert at iframe sig selv i Windchill”. Rediger web.xml filen for ThingWorx applikationen på Tomcat-serveren hvor applikationen befinder sig. I mit tilfælde er placeringen af den pågældende web.xml-fil (der kan være mange web.xml-filer på Tomcat-serveren, afhængigt af din opsætning): <location of Tomcat server>/webapps/ThingWorx/WEB-INF/web.xml Udkommenter specifikke stykker af parameterdefinitioner inden i filen og, i mit tilfælde, da jeg besluttede at bruge WhiteList, tilføj domæner, der er ok til at iframe indholdet, adskilt af mellemrum.Screenshot 16 – u-kommenter filter WhiteList and tilføj domæner
Screenshot 17 – u-kommenter filter-mapping for WhiteList for at aktivere clickjack-filter
… og genstart Tomcat-serveren. Og det skulle være alt. Du bør nu have et Thingworx mashup integreret i Windchill.Screenshot 18 – funktionelt ThingWorx mashup i Windchill
Dette indlæg er baseret på information, der kan findes online i Windchill-manualen, på følgende placering: https://support.ptc.com/help/windchill/whc/whc_en/index.html#page/Windchill_Help_Center%2FWCCG_Serv_ThingWorx_Mashups.html%23 Sørg for at besøge dette link for at finde mere information om integrationsprocessen. Dette handlede om at integrere ThingWorx mashups i Windchill. Læs mere om, hvordan man videregiver kontekstinformation fra Windchill til det integrerede ThingWorx mashup. Se mere om dette emne.