1 <?xml version="1.0" encoding="UTF-8"?>
2 <bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_0co5an7" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="2.0.3">
3 <bpmn:collaboration id="Collaboration">
4 <bpmn:participant id="Sentiment_Analysis" name="Sentiment Analysis" processRef="sentiment-analysis" />
6 <bpmn:process id="sentiment-analysis" name="Sentiment Analysis" isExecutable="true" camunda:versionTag="0.0.1">
7 <bpmn:laneSet id="LaneSet_1u08y0e" />
8 <bpmn:sequenceFlow id="SequenceFlow_14nqu0e" sourceRef="service-report" targetRef="Task_1e7059p" />
9 <bpmn:sequenceFlow id="SequenceFlow_0jebdb9" sourceRef="Task_1e7059p" targetRef="EndEvent_0bmuv13" />
10 <bpmn:sequenceFlow id="SequenceFlow_15dip2q" sourceRef="StartEvent_1t6nxib" targetRef="terms_loop" />
11 <bpmn:sequenceFlow id="SequenceFlow_1j2y6tv" sourceRef="terms_loop" targetRef="service-report" />
12 <bpmn:startEvent id="StartEvent_1t6nxib" camunda:formKey="embedded:deployment:input-terms.html">
13 <bpmn:extensionElements>
14 <camunda:executionListener event="start">
15 <camunda:script scriptFormat="javascript">// make variable global
16 execution.setVariable("results", S('[]'))</camunda:script>
17 </camunda:executionListener>
18 </bpmn:extensionElements>
19 <bpmn:outgoing>SequenceFlow_15dip2q</bpmn:outgoing>
21 <bpmn:subProcess id="terms_loop">
22 <bpmn:extensionElements>
23 <camunda:executionListener event="start">
24 <camunda:script scriptFormat="javascript">// make variables local to loop
25 execution.setVariable("analysis", 0, "terms_loop");
26 execution.setVariable('tweets', S('[]'), "terms_loop");</camunda:script>
27 </camunda:executionListener>
28 <camunda:executionListener event="end">
29 <camunda:script scriptFormat="javascript">var results = execution.getVariable("results");
30 var term = execution.getVariable("term");
31 var analysis = execution.getVariable("analysis");
32 var termStr = term.prop('term').value();
34 // this is for dictionary
35 //results.prop(termStr, analysis);
38 item["name"] = termStr;
39 item["sentiment"] = analysis;
42 execution.setVariable("results", S(results))</camunda:script>
43 </camunda:executionListener>
44 </bpmn:extensionElements>
45 <bpmn:incoming>SequenceFlow_15dip2q</bpmn:incoming>
46 <bpmn:outgoing>SequenceFlow_1j2y6tv</bpmn:outgoing>
47 <bpmn:multiInstanceLoopCharacteristics camunda:collection="${terms.elements()}" camunda:elementVariable="term" />
48 <bpmn:serviceTask id="service-analysis" name="Analysis Service">
49 <bpmn:extensionElements>
52 <camunda:inputParameter name="url">http://analysis:8081/</camunda:inputParameter>
53 <camunda:inputParameter name="method">POST</camunda:inputParameter>
54 <camunda:inputParameter name="headers">
56 <camunda:entry key="Accept">application/json</camunda:entry>
57 <camunda:entry key="Content-Type">application/json</camunda:entry>
59 </camunda:inputParameter>
60 <camunda:inputParameter name="payload">${tweets.toString()}</camunda:inputParameter>
61 <camunda:outputParameter name="analysis">
62 <camunda:script scriptFormat="Javascript">var response = connector.getVariable("response");
63 response.trim()</camunda:script>
64 </camunda:outputParameter>
65 </camunda:inputOutput>
66 <camunda:connectorId>http-connector</camunda:connectorId>
68 </bpmn:extensionElements>
69 <bpmn:incoming>SequenceFlow_0g6bfz6</bpmn:incoming>
70 <bpmn:outgoing>SequenceFlow_1bz7zx2</bpmn:outgoing>
72 <bpmn:serviceTask id="service-twitter" name="Twitter Service">
73 <bpmn:extensionElements>
76 <camunda:inputParameter name="url">
77 <camunda:script scriptFormat="Javascript">var term = execution.getVariable("term");
78 'http://twitter:8084/search/tweets.json?q='+term.prop('term').value()</camunda:script>
79 </camunda:inputParameter>
80 <camunda:inputParameter name="method">GET</camunda:inputParameter>
81 <camunda:inputParameter name="headers">
83 <camunda:entry key="Accept">application/json</camunda:entry>
85 </camunda:inputParameter>
86 <camunda:outputParameter name="tweets">
87 <camunda:script scriptFormat="Javascript">var response = connector.getVariable("response");
88 S(response);</camunda:script>
89 </camunda:outputParameter>
90 </camunda:inputOutput>
91 <camunda:connectorId>http-connector</camunda:connectorId>
93 </bpmn:extensionElements>
94 <bpmn:incoming>SequenceFlow_0f6v4j4</bpmn:incoming>
95 <bpmn:outgoing>SequenceFlow_0g6bfz6</bpmn:outgoing>
97 <bpmn:startEvent id="StartEvent_parsing_term">
98 <bpmn:outgoing>SequenceFlow_0f6v4j4</bpmn:outgoing>
100 <bpmn:sequenceFlow id="SequenceFlow_0f6v4j4" sourceRef="StartEvent_parsing_term" targetRef="service-twitter" />
101 <bpmn:sequenceFlow id="SequenceFlow_0g6bfz6" sourceRef="service-twitter" targetRef="service-analysis" />
102 <bpmn:sequenceFlow id="SequenceFlow_1bz7zx2" sourceRef="service-analysis" targetRef="EndEvent_parsing_term" />
103 <bpmn:endEvent id="EndEvent_parsing_term">
104 <bpmn:incoming>SequenceFlow_1bz7zx2</bpmn:incoming>
107 <bpmn:endEvent id="EndEvent_0bmuv13">
108 <bpmn:incoming>SequenceFlow_0jebdb9</bpmn:incoming>
110 <bpmn:serviceTask id="service-report" name="Report Service">
111 <bpmn:extensionElements>
113 <camunda:inputOutput>
114 <camunda:inputParameter name="url">http://reporting:8083/generatePDF/</camunda:inputParameter>
115 <camunda:inputParameter name="method">POST</camunda:inputParameter>
116 <camunda:inputParameter name="headers">
118 <camunda:entry key="Accept">application/pdf</camunda:entry>
119 <camunda:entry key="Content-Type">application/json</camunda:entry>
121 </camunda:inputParameter>
122 <camunda:inputParameter name="payload">${results.toString()}</camunda:inputParameter>
123 <camunda:outputParameter name="reportPDF">
124 <camunda:script scriptFormat="javascript">var response = connector.getVariable("response");
127 var file = Java.type('org.camunda.bpm.engine.variable.Variables').fileValue("pdfTest").file(response.getBytes("utf-8")).mimeType('application/pdf').create()
128 //response.getBytes("utf-8")
129 file</camunda:script>
130 </camunda:outputParameter>
131 </camunda:inputOutput>
132 <camunda:connectorId>http-connector</camunda:connectorId>
134 </bpmn:extensionElements>
135 <bpmn:incoming>SequenceFlow_1j2y6tv</bpmn:incoming>
136 <bpmn:outgoing>SequenceFlow_14nqu0e</bpmn:outgoing>
138 <bpmn:userTask id="Task_1e7059p" name="download pdf" camunda:formKey="embedded:deployment:download-pdf.html">
139 <bpmn:incoming>SequenceFlow_14nqu0e</bpmn:incoming>
140 <bpmn:outgoing>SequenceFlow_0jebdb9</bpmn:outgoing>
143 <bpmndi:BPMNDiagram id="BPMNDiagram_1">
144 <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration">
145 <bpmndi:BPMNShape id="Participant_0gzc3m9_di" bpmnElement="Sentiment_Analysis">
146 <dc:Bounds x="0" y="0" width="1084" height="202" />
148 <bpmndi:BPMNShape id="SubProcess_1skl2rb_di" bpmnElement="terms_loop" isExpanded="true">
149 <dc:Bounds x="135" y="19" width="443" height="163" />
151 <bpmndi:BPMNShape id="ServiceTask_01bq7a6_di" bpmnElement="service-analysis">
152 <dc:Bounds x="381" y="60" width="100" height="80" />
154 <bpmndi:BPMNShape id="ServiceTask_1o2usc9_di" bpmnElement="service-twitter">
155 <dc:Bounds x="230" y="60" width="100" height="80" />
157 <bpmndi:BPMNShape id="StartEvent_1nx6b6f_di" bpmnElement="StartEvent_parsing_term">
158 <dc:Bounds x="156" y="82" width="36" height="36" />
160 <bpmndi:BPMNEdge id="SequenceFlow_0f6v4j4_di" bpmnElement="SequenceFlow_0f6v4j4">
161 <di:waypoint x="192" y="100" />
162 <di:waypoint x="230" y="100" />
164 <bpmndi:BPMNEdge id="SequenceFlow_0g6bfz6_di" bpmnElement="SequenceFlow_0g6bfz6">
165 <di:waypoint x="330" y="100" />
166 <di:waypoint x="381" y="100" />
168 <bpmndi:BPMNEdge id="SequenceFlow_1bz7zx2_di" bpmnElement="SequenceFlow_1bz7zx2">
169 <di:waypoint x="481" y="100" />
170 <di:waypoint x="516" y="100" />
172 <bpmndi:BPMNShape id="StartEvent_1t6nxib_di" bpmnElement="StartEvent_1t6nxib">
173 <dc:Bounds x="56" y="83" width="36" height="36" />
175 <bpmndi:BPMNShape id="ServiceTask_1gaqtzh_di" bpmnElement="service-report">
176 <dc:Bounds x="619" y="61" width="100" height="80" />
178 <bpmndi:BPMNShape id="UserTask_0iooc2g_di" bpmnElement="Task_1e7059p">
179 <dc:Bounds x="766" y="61" width="100" height="80" />
181 <bpmndi:BPMNShape id="EndEvent_0bmuv13_di" bpmnElement="EndEvent_0bmuv13">
182 <dc:Bounds x="1024" y="83" width="36" height="36" />
184 <bpmndi:BPMNEdge id="SequenceFlow_14nqu0e_di" bpmnElement="SequenceFlow_14nqu0e">
185 <di:waypoint x="719" y="101" />
186 <di:waypoint x="766" y="101" />
188 <bpmndi:BPMNEdge id="SequenceFlow_0jebdb9_di" bpmnElement="SequenceFlow_0jebdb9">
189 <di:waypoint x="866" y="101" />
190 <di:waypoint x="1024" y="101" />
192 <bpmndi:BPMNEdge id="SequenceFlow_15dip2q_di" bpmnElement="SequenceFlow_15dip2q">
193 <di:waypoint x="92" y="101" />
194 <di:waypoint x="135" y="101" />
196 <bpmndi:BPMNEdge id="SequenceFlow_1j2y6tv_di" bpmnElement="SequenceFlow_1j2y6tv">
197 <di:waypoint x="578" y="101" />
198 <di:waypoint x="619" y="101" />
200 <bpmndi:BPMNShape id="EndEvent_07g109m_di" bpmnElement="EndEvent_parsing_term">
201 <dc:Bounds x="516" y="82" width="36" height="36" />
204 </bpmndi:BPMNDiagram>