Hi Guys,
 
I have two weird situations, maybe the reason is obvious but I'm focus on my 
code and don't catch this. So I hope you can help me or suggest what to do :)
 
First I will describe my workflow and then I will describe my problem with it.
 
There is a regular 'Form1' with character optiona 'Field1.1'.
To this form is connected 'FLTR1' executed on Modify with qualification:
('Field1.1' != 'DB.Field1.1') AND ('Field1.1' != $NULL$)
2 actions:
- Set Field
     From Name:'Form2'
     Qualification:('Field2.1' = "Value") AND ('Status2' = "Active") AND 
('Field2.2' = $Field1.1$)
          If No Request Match:Set Fields to $NULL$
          If Multiple Request Match:Use First Matching Request
     Mapping:  'tmpField1.2'=$Request ID2$
- Call Guide 'Guide1' Table Loop:None
 
Filter Guide "Guide1" has only one 'FLTR2' which is also related to 'Form1' but 
without execution, with qualification:
'tmpField1.2' != $NULL$
1 action:
- Set Field
     Form Name:'Form2'
     Qualification:'Request ID2' = $tmpField1.2$
          If No Request Match:Set Fields to $NULL$
          If Multiple Request Match:Use First Matching Request
     Mapping:  'Field1.3'=$Field2.3$
1 else action:
- Push Field
     Form Name:'Form2'
     Qualification:('Field2.1' = "Value") AND ('Status2' > "Active") AND 
('Field2.2' = $Field1.1$)
          If No Request Match:Create a New Request
          If Multiple Request Match:Take No Action
     Mapping:  'Status2'="Pending"
                    'Field2.1'="Value"
                    'Field2.2'=$Field1.1$
 
So when value in 'Field1.1' on 'Form1' has been changed, but is not NULL then 
workflow should check whether such value already exist on 'Form2' in 'Field2.2' 
and if yes then take value from 'Field2.3' from 'Form2' and set to 'Field1.3' 
on 'Form1'.
If such value doesn't exist on 'Form2' then records should be created.
 
It is typical situation - so it should work without any problem. But it's not, 
for some reason 'FLTR1' is fire even when 'Field1.1' is NULL and it causes 
create on 'Form2' record with NULL value in 'Field2.2'.
Update on 'Form1' is done by API. When I try simulate this situation by 
preparing test workflow which push data to 'Form1' to 'Field1.1' NULL value it 
works fine - 'FLTR1' doesn't fire. When I push some value to 'Field1.1' then 
workflow also work fine - check whether such value exist and if no create new 
record on 'Form2' but with value in 'Field2.2'. Also when I push directly to 
'Form2' to 'Field2.2' with value NULL then my troubleshoot filter fire and send 
to me notification about this.
So it looks like problem exist only when it is done by API program.
 
To troubleshoot this issue I've created filter on 'Form2' which should execute 
on Submit, Modify when 'Field2.2'=$NULL$ and send to me notification about such 
situation. It is strange because although records are created with 
'Field2.2'=$NULL$ the FLTR doesn't pass the qualification (I see it in the 
logs).
 
This weird issue can be seen in gathered logs (FLTR, SQL and API):
Server API log:
/* Sat Jan 17 2015 16:10:00.0412 */+SE     ARSetEntry -- schema Form1 entryId 
100000000000001 from Unidentified Client (protocol 14) at IP address 192.168.0.1
/* Sat Jan 17 2015 16:10:02.7688 */-SE               OK
 
Server FLTR log:
/* Sat Jan 17 2015 16:10:02.6351 */     <Filter Level:0 Number Of Filters:311> 
Checking "FLTR1" (500)
    --> Passed -- perform actions
         0: Set Fields
               tmpField1.2 (536871628) = 
         1: Call Guide "Guide1"
/* Sat Jan 17 2015 16:10:02.6367 */     <Filter Level:0 Number Of Filters:312> 
Checking "FLTR2" (500)
    --> Failed qualification -- perform else actions
         0: Push Fields -> "Form2
               <deferred to phase 2>
/* Sat Jan 17 2015 16:10:02.6370 */     Call Guide "Guide1" (return)
...
/* Sat Jan 17 2015 16:10:02.7076 */     End of filter processing (phase 1) -- 
Operation - SET on Form1 - 100000000000001
/* Sat Jan 17 2015 16:10:02.7077 */     Restart of filter processing (phase 2) 
-- Operation - SET on Form1 - 100000000000001
/* Sat Jan 17 2015 16:10:02.7079 */     <Filter Level:0 Number Of Filters:391> 
Checking "FLTR2"
         0: Push Fields -> "Form2"
               <deferred from filter FLTR2>
               Status2 (7) = 1
               Field2.1 (8) = Value
               Field2.2 (536871075) = 
               
Server SQL log:
/* Sat Jan 17 2015 16:10:02.6354 */SELECT T1017.C1 FROM T1017 WHERE ((T1017.C8 
= 'Value') AND (T1017.C7 = 0) AND (T1017.C536871075 = '')) ORDER BY 1 ASC
/* Sat Jan 17 2015 16:10:02.6362 */OK
/* Sat Jan 17 2015 16:10:02.6412 */SELECT C1 FROM T517 WHERE C1 = 
'100000000000001'
/* Sat Jan 17 2015 16:10:02.6421 */OK
/* Sat Jan 17 2015 16:10:02.7082 */SELECT T1017.C1 FROM T1017 WHERE ((T1017.C8 
= 'Value') AND (T1017.C7 > 0) AND (T1017.C536871075 = '')) ORDER BY 1 ASC
/* Sat Jan 17 2015 16:10:02.7094 */OK
/* Sat Jan 17 2015 16:10:02.7103 */UPDATE arschema SET nextId = nextId + 1 
WHERE schemaId = 1017
/* Sat Jan 17 2015 16:10:02.7111 */OK
/* Sat Jan 17 2015 16:10:02.7112 */SELECT nextId FROM arschema WHERE schemaId = 
1017
/* Sat Jan 17 2015 16:10:02.7118 */OK
/* Sat Jan 17 2015 16:10:02.7119 */INSERT INTO T1017 
(C2,C7,C8,C536871075,C3,C5,C6,C1) VALUES 
('X',1,'Value','',1421511002,'X',1421511002,'200000000000002')
/* Sat Jan 17 2015 16:10:02.7158 */OK
/* Sat Jan 17 2015 16:10:02.7159 */INSERT INTO H1017 (entryId,T0,U0,T1,U1) 
VALUES ('200000000000002',1421511002,'X',1421511002,'X')
/* Sat Jan 17 2015 16:10:02.7167 */OK
/* Sat Jan 17 2015 16:10:02.7168 */COMMIT WORK
/* Sat Jan 17 2015 16:10:02.7203 */UPDATE T517 SET 
C536871733='',C5='X',C6=1421511002 WHERE C1 = '100000000000001'
/* Sat Jan 17 2015 16:10:02.7217 */OK
/* Sat Jan 17 2015 16:10:02.7228 */COMMIT WORK
 
 
Problem has been observed in the ARS 7.5.00.
 
What do you think about this? What could be the reason?
 
Cheers,
Piotr

_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
"Where the Answers Are, and have been for 20 years"

Reply via email to