Skip to content

Commit 7b11e99

Browse files
committed
Add some more configuration files which should be in the standard
1 parent a5df73c commit 7b11e99

File tree

10 files changed

+633
-0
lines changed

10 files changed

+633
-0
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#
2+
# DB Monitoring for closed or aborted TODO-Lists
3+
#
4+
5+
# Active/deactive this monitoring
6+
dbmon.todoreport.active = false
7+
# Reference to query in dq.properties
8+
dbmon.todoreport.initquery = smardes.todo_closed_instances
9+
dbmon.todoreport.query = smardes.todo_closed_instances
10+
# Primary column to remember the last processed row (can be (long) integer, timestamp or string)
11+
dbmon.todoreport.column1 = end_time
12+
# Secondary column to remember the last processed row
13+
#dbmon.test.column2 = not_needed_here
14+
# Tertiary column to remember the last processed row
15+
#dbmon.test.column3 = not_needed_here
16+
# Sleep time between two polls in seconds
17+
dbmon.todoreport.interval = 60
18+
# Maximum number of rows to be processed in each polling
19+
dbmon.todoreport.maxitems = 1
20+
# Queue address where the message should be sent
21+
dbmon.todoreport.address = RuleEngine
22+
23+
24+
#
25+
# DB Monitoring for inactive TODO-Lists
26+
#
27+
28+
# Active/deactive this monitoring
29+
dbmon.todoinactive.active = false
30+
# Reference to query in dq.properties
31+
dbmon.todoinactive.initquery = smardes.todo_instance_inactive
32+
dbmon.todoinactive.query = smardes.todo_instance_inactive
33+
# Primary column to remember the last processed row (can be (long) integer, timestamp or string)
34+
dbmon.todoinactive.column1 = last_change
35+
# Secondary column to remember the last processed row
36+
#dbmon.test.column2 = not_needed_here
37+
# Tertiary column to remember the last processed row
38+
#dbmon.test.column3 = not_needed_here
39+
# Sleep time between two polls in seconds
40+
dbmon.todoinactive.interval = 60
41+
# Maximum number of rows to be processed in each polling
42+
dbmon.todoinactive.maxitems = 1
43+
# Queue address where the message should be sent
44+
dbmon.todoinactive.address = RuleEngine
45+
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
This folder contains queries used in rules and business logic.
2+
3+
All files with suffix "properties" are being parsed and taken into account.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
query.maindata.allUsers = SELECT user FROM Users
2+
query.maindata.allDevices = SELECT device FROM Devices
3+
query.maindata.devicesForUser = SELECT device FROM Devices \
4+
WHERE Devices.user = ?
5+
6+
query.maindata.nameForDevice = SELECT Users.name FROM Users \
7+
INNER JOIN Devices ON Devices.user = Users.user \
8+
WHERE Devices.device = ?
9+
10+
#query.maindata.allChatDestinations = SELECT user FROM ChatDestinations
11+
query.maindata.allChatDestinations = SELECT Users.user,Users.name FROM ChatDestinations \
12+
INNER JOIN Users ON Users.user = ChatDestinations.User
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Monitoring query for closed or aborted instances
2+
query.smardes.todo_closed_instances = select \
3+
case when abortedby_ is not null then abortedat_ else closedAt_ end AS end_time, \
4+
UUID_, ABORTEDAT_, ABORTEDBY_, CLOSEDAT_, CLOSEDBY_, DEFINITIONID_, DOMAIN_, STARTEDAT_, STARTEDBY_ \
5+
from smardes_todolistinstance where abortedBy_ is not null or closedBy_ is not null
6+
query.smardes.todo_instance_details = select * from smardes_todolistinstance where uuid_ = ?
7+
query.smardes.todo_instance_inactive = select id, last_change, inactive_minutes from ( \
8+
select id, last_change, (now() - last_change) MINUTE as inactive_minutes from ( \
9+
select i.uuid_ as id, isnull(max(s.closedat_), min(i.startedat_)) as last_change \
10+
from smardes_todolistinstance i left outer join smardes_todoliststep s on i.uuid_ = s.instance_ \
11+
where i.closedby_ is null and i.abortedby_ is null \
12+
group by i.uuid_) \
13+
) where inactive_minutes > 2
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
This folder contains workflow rules processed by the internal rule engine.
2+
3+
All files with suffix "xml" are being parsed and taken into account.
4+
To exclude rule XML files move them into the "disabled" folder, for example.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Use this folder to disabled rules quickly.
Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<rules xmlns="http://www.camline.com/projects/smardes/rules"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://www.camline.com/projects/smardes/rules rules.xsd">
5+
6+
<globalVariables>
7+
<property name="global.individualJobStartNames" expression="el:list('ChatSendMessage', 'TodoListStart', 'TodoListPickup')" />
8+
</globalVariables>
9+
10+
<patchMessageBodyPrototypes>
11+
<patchMessageBodyPrototype name="BeginJobMessage" variable="job">
12+
<property name="job.Type" value="Job"/>
13+
<property name="job.Id" expression="msg.body.Id"/>
14+
<property name="job.Name" expression="msg.body.Name"/>
15+
<property name="job.AssignedTo" expression="msg.body.CreatedBy"/>
16+
<property name="job.Status" value="Created"/>
17+
<property name="job.Immediate" expression="false" />
18+
<property name="job.Status" value="Received" />
19+
<property name="job.Resource" expression="el:newStructure()" />
20+
<property name="job.Resource.list_title" expression="msg.body.Name"/>
21+
<property name="job.Resource.list_text" value="Neuer Auftrag"/>
22+
</patchMessageBodyPrototype>
23+
</patchMessageBodyPrototypes>
24+
25+
<ruleGroup name="Rule Engine Requests">
26+
<selector address="RuleEngine" jsonBody="true" />
27+
28+
<!-- TODO this is the conversation start! Include this in Conversation -->
29+
<ruleSet name="Generic start Job message">
30+
<condition>
31+
msg.body.Type == 'JobReply' and
32+
msg.body.Action == 'StartJob'
33+
</condition>
34+
35+
<rule name="Job starten: ChatSendMessage">
36+
<condition>
37+
msg.body.Name == 'ChatSendMessage'
38+
</condition>
39+
<actions>
40+
<setLocalVariables>
41+
<property name="local.destinations" expression="dq:mapEntries('maindata.allChatDestinations')"/>
42+
<property name="local.destinationItems" expression="el:select(local.destinations, 'dest', 'dest.USER')"/>
43+
<property name="local.destinationNames" expression="el:select(local.destinations, 'dest', 'dest.NAME')"/>
44+
</setLocalVariables>
45+
<pushMessage
46+
address="global.sdgwAddress"
47+
subject="Job">
48+
<baseMessage expression="msg">
49+
<patchMessageBodyRef name="BeginJobMessage"/>
50+
<patchMessageBody variable="job">
51+
<property name="job.Resource.list_title" value="Chat Nachricht"/>
52+
<property name="job.Resource.list_text" value="Nachricht senden"/>
53+
<property name="job.Resource.subject" expression="local.destinationItems[0]" />
54+
<property name="job.Resource.subject_values" expression="str:aggregate(local.destinationItems, ';', '', '')" />
55+
<property name="job.Resource.subject_labels" expression="str:aggregate(local.destinationNames, ';', '', '')" />
56+
</patchMessageBody>
57+
</baseMessage>
58+
</pushMessage>
59+
</actions>
60+
</rule>
61+
62+
<rule name="Job starten: TodoListStart -> Forward ToDoFind Request">
63+
<condition>
64+
msg.body.Name == 'TodoListStart'
65+
</condition>
66+
<actions>
67+
<pushMessage address="global.todoAddress"
68+
subject="ToDoFind">
69+
<baseMessage expression="msg.body.Resource">
70+
<patchMessageBody variable="job">
71+
<property name="job.context" expression="el:newStructure()" />
72+
<property name="job.domain" expression="global.contextDomain"/>
73+
</patchMessageBody>
74+
</baseMessage>
75+
<response responseVar="todo_response" />
76+
</pushMessage>
77+
</actions>
78+
</rule>
79+
80+
<rule name="Job starten: TodoListPickup -> Forward ToDoInstances Request">
81+
<condition>
82+
msg.body.Name == 'TodoListPickup'
83+
</condition>
84+
<actions>
85+
<pushMessage address="global.todoAddress"
86+
subject="ToDoGetRunningInstances">
87+
<baseMessage expression="msg.body.Resource">
88+
<patchMessageBody variable="job">
89+
<property name="job.context" expression="el:newStructure()" />
90+
<property name="job.domain" expression="global.contextDomain"/>
91+
</patchMessageBody>
92+
</baseMessage>
93+
<response responseVar="todo_response" />
94+
</pushMessage>
95+
</actions>
96+
</rule>
97+
98+
<rule name="Job starten: Generic for all other Jobs">
99+
<condition>
100+
not el:contains(global.individualJobStartNames, msg.body.Name)
101+
</condition>
102+
<actions>
103+
<pushMessage
104+
address="global.sdgwAddress"
105+
subject="Job">
106+
<baseMessage expression="msg">
107+
<patchMessageBodyRef name="BeginJobMessage"/>
108+
<patchMessageBody variable="job">
109+
<property name="job.Resource.list_title" expression="msg.body.Name"/>
110+
<property name="job.Resource.list_text" value="Neuer Auftrag"/>
111+
</patchMessageBody>
112+
</baseMessage>
113+
</pushMessage>
114+
</actions>
115+
</rule>
116+
</ruleSet>
117+
118+
<rule name="Job starten: TodoListStart -> Return ToDoFind Response">
119+
<condition>
120+
el:exists(root, 'todo_response') and todo_response.subject == "ToDoFind"
121+
</condition>
122+
<actions>
123+
<pushMessage
124+
address="global.sdgwAddress"
125+
subject="Job">
126+
<baseMessage expression="msg">
127+
<patchMessageBodyRef name="BeginJobMessage"/>
128+
<patchMessageBody variable="job">
129+
<property name="job.Resource.list_title" value="TODO-Liste starten"/>
130+
<property name="job.Resource.list_text" value="Eine neue TODO-Liste beginnen."/>
131+
<!-- <property name="job.Resource.subject" value="Primadonna1;Primadonna2" />TODO fuellen der Liste aus Todo-API -->
132+
<!-- <property name="job.Resource.subject"
133+
expression="str:aggregate(dq:entries('maindata.bkwToDoLists'), ';', '', '')" /> -->
134+
<property name="job.Resource.subject"
135+
expression="str:aggregate(el:select(todo_response.body.responseObject.headers, 'each', 'each.id'), ';', '', '')" />
136+
</patchMessageBody>
137+
</baseMessage>
138+
</pushMessage>
139+
</actions>
140+
</rule>
141+
<ruleSet name="Job starten: TodoListPickup -> Return ToDoGetRunningInstances Response">
142+
<condition>
143+
el:exists(root, 'todo_response') and todo_response.subject == "ToDoGetRunningInstances"
144+
</condition>
145+
<rule name="Job starten: TodoListPickup -> Daten verarbeiten">
146+
<actions>
147+
<setLocalVariables>
148+
<property name="local.instances" expression="todo_response.body.responseObject.instances" />
149+
<property name="local.instance_ids" expression="el:select(local.instances, 'inst', 'inst.id')" />
150+
<!-- <property name="local.instance_names" expression="el:select(local.instances, 'inst', str:concat('inst.name', ' ', 'inst.name', ' ', 'inst.startedBy'))" /> -->
151+
<property name="local.instance_names" expression="el:select(local.instances, 'each', 'str:concat(each.header.name, \' \', each.startedBy)')" />
152+
</setLocalVariables>
153+
</actions>
154+
</rule>
155+
<rule name="Job starten: TodoListPickup -> Send Job Start Message">
156+
<actions>
157+
<pushMessage
158+
address="global.sdgwAddress"
159+
subject="Job">
160+
<baseMessage expression="msg">
161+
<patchMessageBodyRef name="BeginJobMessage"/>
162+
<patchMessageBody variable="job">
163+
<property name="job.Resource.list_title" value="TODO-Liste weiter bearbeiten"/>
164+
<property name="job.Resource.list_text" value="Eine neue TODO-Liste fortführen."/>
165+
<!-- <property name="job.Resource.subject" value="Primadonna1;Primadonna2" />TODO fuellen der Liste aus Todo-API -->
166+
<!-- <property name="job.Resource.subject"
167+
expression="str:aggregate(dq:entries('maindata.bkwToDoLists'), ';', '', '')" /> -->
168+
<!-- <property name="job.Resource.subject"
169+
expression="str:aggregate(el:select(local.instances, 'inst', 'inst.id'), ';', '', '')" /> -->
170+
<property name="job.Resource.subject" expression="local.instance_ids[0]" />
171+
<property name="job.Resource.subject_values" expression="str:aggregate(local.instance_ids, ';', '', '')" />
172+
<property name="job.Resource.subject_labels" expression="str:aggregate(local.instance_names, ';', '', '')" />
173+
</patchMessageBody>
174+
</baseMessage>
175+
</pushMessage>
176+
</actions>
177+
</rule>
178+
</ruleSet>
179+
</ruleGroup>
180+
</rules>

0 commit comments

Comments
 (0)