(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{365:function(e,r,t){"use strict";t.r(r);var o=t(153),n=(t(61),t(11)),c=(t(21),t(150),t(147)),m=t.n(c),l=t(149),f=t(155),d=t.n(f),h=t(159),v={head:function(){return{title:"Specification for process messages"}},created:function(){var e=this,r=new Date,t="a4927dad-58d4-4580-b460-79cefd56775b";this.$static={message:{"content-spec":"urn:spec://eclipse.org/unide/process-message#v2",device:{deviceID:t},process:{ts:r.toISOString()},measurements:[{ts:new Date(r.valueOf()+100).toISOString(),series:{force:[26,23,24],pressure:[52.4,46.32,44.2432]}}]},complexMessage:{"content-spec":"urn:spec://eclipse.org/unide/process-message#v2",device:{deviceID:t,operationalStatus:"normal",metaData:{swVersion:"2.0.3.13",swBuildId:"41535"}},part:{type:"SINGLE",partTypeID:"F00VH07328",partID:"420003844",result:"NOK",code:"HUH289",metaData:{toolId:"32324-432143"}},process:{externalProcessId:"b4927dad-58d4-4580-b460-79cefd56775b",ts:r.toISOString(),result:"NOK",shutoffPhase:"phase 2",program:{id:"1",name:"Programm 1",lastChangedDate:"2002-05-30T09:30:10.123+02:00"},shutoffValues:{force:{ts:new Date(r.valueOf()+1e4).toISOString(),value:24,upperError:26,lowerError:22,upperWarn:25,lowerWarn:23,target:24},pressure:{value:50,upperError:52,lowerError:48}},metaData:{maxDuration:"30min",escalation:"shift leader"}},measurements:[{ts:new Date(r.valueOf()+100).toISOString(),phase:"phase 1",name:"heating up",result:"OK",code:"0000 EE01",limits:{pressure:{upperError:4444,lowerError:44,upperWarn:2222,lowerWarn:46,target:35},force:{upperError:[27,24,25],lowerError:[25,22,23]}},specialValues:[{$_time:12,name:"turning point",value:{pressure:24,force:50}}],series:{time:[30,36,42],force:[26,23,24],pressure:[52.4,46.32,44.2432],temperature:[45.4243,46.42342,44.2432]}},{ts:new Date(r.valueOf()+430).toISOString(),phase:"phase 2",name:"processing",result:"OK",series:{$_time:[0,23,24],temperature:[49.2,48.8,50]}}]}},this.$static.examples=Object.entries(Object(n.a)({},["content-spec","device","device.deviceID","device.metaData","device.operationalStatus","measurements","measurements[0].code","measurements[0].limits","measurements[0].name","measurements[0].phase","measurements[0].result","measurements[0].series","measurements[0].series.$_time","measurements[0].specialValues","measurements[0].specialValues[0].$_time","measurements[0].specialValues[0].name","measurements[0].specialValues[0].value","measurements[0].ts","part","part.code","part.metaData","part.partID","part.partTypeID","part.result","part.type","process","process.externalProcessId","process.metaData","process.program","process.program.id","process.program.lastChangedDate","process.program.name","process.result","process.shutoffPhase","process.shutoffValues","process.ts"].reduce(function(e,r){return e[r.replace(/(^|\.)/g,"$1properties.").replace(/\[[^]]*]/g,".items")]=r,e},{'properties.measurements.items.properties.limits.patternProperties["^[^$]+"].oneOf[0]':"measurements[0].limits.pressure",'properties.measurements.items.properties.limits.patternProperties["^[^$]+"].oneOf[1]':"measurements[0].limits.force",'properties.measurements.items.properties.series.patternProperties["^[^$]+"]':"measurements[0].series.force",'properties.process.properties.shutoffValues.patternProperties["^[^$]+"]':"process.shutoffValues.force"}),["lowerError","lowerWarn","target","upperError","upperWarn"].reduce(function(e,r){return e['properties.measurements.items.properties.limits.patternProperties["^[^$]+"].oneOf[0].properties.'.concat(r)]="measurements[0].limits.pressure.".concat(r),e['properties.measurements.items.properties.limits.patternProperties["^[^$]+"].oneOf[1].properties.'.concat(r)]="measurements[0].limits.force.".concat(r),e['properties.process.properties.shutoffValues.patternProperties["^[^$]+"].properties.'.concat(r)]="process.shutoffValues.force.".concat(r),e},{}))).reduce(function(r,t){var n=Object(o.a)(t,2),c=n[0],path=n[1],m=d()(e.$static.message,path)||d()(e.$static.complexMessage,path);return m&&(r[c]=[m]),r},{})},filters:{stringify:function(e){return JSON.stringify(e," ",2)}},components:{card:l.a,prism:m.a,schemaDetail:h.a}},_=t(2),component=Object(_.a)(v,function(){var e=this,r=e.$createElement,t=e._self._c||r;return t("div",{staticClass:"process-message content"},[e._m(0),e._v(" "),t("p",[e._v("The process message is the format to exchange data out of discrete processes. It also allows to transport process information, part information and measurement data for each phase of the process.")]),e._v(" "),t("img",{staticClass:"is-center",attrs:{src:"images/specification/v2/processPayload.svg",alt:"Class diagram of the process data payload",title:"Class diagram of the process data payload"}}),e._v(" "),t("schemaDetail",{attrs:{type:"v2/process",examples:e.$static.examples}},[t("card",{attrs:{collapsed:!0}},[t("template",{slot:"header"},[e._v("\n        Minimal message example\n      ")]),e._v(" "),t("prism",{attrs:{language:"json"}},[e._v(e._s(e._f("stringify")(e.$static.message)))])],2),e._v(" "),t("card",{attrs:{collapsed:!0}},[t("template",{slot:"header"},[e._v("\n        Process message example\n      ")]),e._v(" "),t("prism",{attrs:{language:"json"}},[e._v(e._s(e._f("stringify")(e.$static.complexMessage)))])],2)],1)],1)},[function(){var e=this.$createElement,r=this._self._c||e;return r("h1",[r("a",{attrs:{id:"Process-Payload",title:"Process Payload"}}),this._v("\n    Process Payload\n  ")])}],!1,null,null,null);r.default=component.exports}}]);