1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | ... // -----New form----- var form = new FormData(); // -----File part----- form.append('file', fs.createReadStream('EventDetection.sab'), { contentType: 'application/octet-stream' }); // -----JSON Part----- jsonObject = JSON.stringify({ "jobName" : "EventDetectionSample", "submissionParameters" : { "route" : app_uri, }, }); console.info('JSON object part: ' + jsonObject); var buffer = new Buffer(jsonObject); form.append('my_buffer', buffer, { contentType: 'application/json', // The line below is not an actual file. The name with the .json // extension is needed for the data in the buffer to be recognized // as json. "filename": "jparams.json" }); // -----POST Params----- var uri_string = sa_props.jobs_path + '?bundle_id=EventDetection.sab'; // -----SUBMIT POST----- var jsonPostRes = {}; form.submit({ protocol: 'https:', host: sa_props.rest_host, path: uri_string, headers: {'Authorization' : authbuf} }, function(err, res) { ... |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | // POST handler for the events being sent back from the Streams application app.post('/', function(req, res){ status_step[4] = "Processing Events"; if (!cancelling) { console.info("In POST function"); var jsonString = req.body.jsonString; console.info("POST message is: " + jsonString); var payload = JSON.parse(jsonString); if (payload.eventType == 'MaxMin Temp') { // Max or min temperature change maxmin = payload; } else { // Regular event eventCount++; console.info("Event total = " + eventCount); // Add event to the array used by the web user interface events.push(new Event(eventCount, payload)); // Cancel the Streams job if we've reached the event target if (eventCount == eventTarget) { cancelling = true; console.info("EVENT TARGET REACHED..."); console.info("STREAMS JOB WILL BE CANCELLED."); finalCancel(jobNumber.toString()); } } } res.send(); }); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | // // The first complex event is called "M-shape". It triggers when the graph of the // temperature for a weather station form's an M shape over a period of time. // // Detecting M shape patterns in weather data is not that useful, but recognizing an M shape in // financial trading is valuable and is referred to as a "double-top" stock pattern. // // See http://hirzels.com/martin/papers/debs12-cep.pdf for more information on this complex event // detection method, the double-top pattern and other patterns. // stream<WeatherSummary weatherValues, rstring event> TempMEvent = MatchRegex(WeatherSummary) { param pattern : ". rise+ drop+ rise+ drop* deep"; partitionBy : stationCode; predicates : { rise = tempInF>First(tempInF) && tempInF>=Last(tempInF), drop = tempInF>=First(tempInF) && tempInF<Last(tempInF), deep = tempInF<First(tempInF) && tempInF<Last(tempInF) }; output TempMEvent : weatherValues=WeatherSummary, event="M-Shape Temp"; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 | // // Send events to the application user interface by converting them to json and HTTPPost-ing // to the Node.js app // stream <rstring jsonString> JSONOutput = com.ibm.streamsx.json::TupleToJSON(OutputEvents) { } () as HttpEvents = HTTPPost(JSONOutput) { param headerContentType : "application/json"; url : ((rstring) getSubmissionTimeValue("route")); } |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |