-
Notifications
You must be signed in to change notification settings - Fork 5
/
model.xml
132 lines (73 loc) · 5.24 KB
/
model.xml
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<project heartbeat-interval="1" luaroot="@ESP_PROJECT_OUTPUT@/luaroot" name="python_compute" pubsub="auto" threads="1">
<description><![CDATA[This project uses Python code to modify customer data.]]></description>
<metadata>
<meta id="layout">{"cq1":{"Customers":{"x":50,"y":50},"TransformData":{"x":50,"y":175}}}</meta>
<meta id="studioUploadedBy">mtlpst</meta>
<meta id="studioUploaded">1709552656919</meta>
<meta id="studioModified">1709552674304</meta>
<meta id="studioTags">Example</meta>
<meta id="studioModifiedBy">mtlpst</meta>
</metadata>
<contqueries>
<contquery name="cq1" trace="TransformData">
<windows>
<window-source name="Customers" pubsub="true">
<description><![CDATA[This window receives input events from the CSV file that lists customers.]]></description>
<schema>
<fields>
<field key="true" name="custref" type="string"/>
<field name="forename" type="string"/>
<field name="surname" type="string"/>
<field name="telno" type="string"/>
<field name="email" type="string"/>
</fields>
</schema>
<connectors>
<connector class="fs" name="input_python_compute">
<properties>
<property name="type"><![CDATA[pub]]></property>
<property name="fsname"><![CDATA[@ESP_PROJECT_HOME@/test_files/python_compute.csv]]></property>
<property name="fstype"><![CDATA[csv]]></property>
</properties>
</connector>
</connectors>
</window-source>
<window-python events="create" name="TransformData">
<description><![CDATA[This window capitalizes each customer's surname, determines the customer's preferred method of communication, and transforms telephone numbers into standard format.]]></description>
<schema>
<fields>
<field key="true" name="custref" type="string"/>
<field name="forename" type="string"/>
<field name="surname" type="string"/>
<field name="telno" type="string"/>
<field name="email" type="string"/>
<field name="notify" type="string"/>
</fields>
</schema>
<copy exclude="true"><![CDATA[surname,telno]]></copy>
<use><![CDATA[surname,telno]]></use>
<code><![CDATA[import esp
def create(data,context):
event = {}
event['surname'] = data.get('surname', '').upper()
event['telno'] = cleanNumber(data.get('telno', ''))
if (event['telno'] != ''):
if (len(event['telno']) > 10):
event['telno'] = event['telno'][1:11]
event['notify'] = 'sms'
else:
event['notify'] = 'email'
return event
def cleanNumber(telno):
str = ''
if (telno != '' and telno is not None):
str = ''.join(ch for ch in telno if ch.isdigit())
return str]]></code>
</window-python>
</windows>
<edges>
<edge source="Customers" target="TransformData"/>
</edges>
</contquery>
</contqueries>
</project>