Go Back

How the flexibility of the HunterQueryEngine helps the Hunter Client user

Under the new Hunter Client architecture, we've separated the user interface (Hunter Client) from the query engine (HunterQueryEngine) web service.  In addition to the benefits of simplifying the client installation process, it allows the HunterQueryEngine web service to be tailored or customize to a particular need.  This flexibility of the HunterQueryEngine protects the Hunter Client user from keeping track of very specialized database knowledge.

For example, the DuPont Company has two businesses DECT and DCPP that use Sample Manager to store chemical sample data.  However, each of these businesses archives their chemical data differently.  Cyberwolf Software took advantage of the flexibility of the HunterQueryEngine to build the appropriate query for the business user.

The idea is to make the user interface look consistent to each user even though the backend query generated is completely different.  The generation of the SQL query is the responsibility of the HunterQueryEngine.

DECT All Data - Hunter Client UI View

SampleManager DECT All Data

 

DECT SQL Query Generated - HunterQueryEngine

Select 
s.id_numeric,
s.id_text,
s.sampling_point,
r.name,
r.value
From 
 ((c_sample_2004 s
INNER JOIN c_test_2004 t ON s.id_numeric=t.sample)
INNER JOIN c_result_2004 r ON t.test_number=r.test_number) 
Where 
 s.login_date between '01-Dec-04'
 And '01-Apr-05'
 And s.sampling_point = 'CWTEST'  UNION ALL Select
s.id_numeric,
s.id_text,
s.sampling_point,
r.name,
r.value
From 
 ((c_sample_2005 s
INNER JOIN c_test_2005 t ON s.id_numeric=t.sample)
INNER JOIN c_result_2005 r ON t.test_number=r.test_number) 
Where 
 s.login_date between '01-Dec-04'
 And '01-Apr-05'
 And s.sampling_point = 'CWTEST'  UNION ALL Select
s.id_numeric,
s.id_text,
s.sampling_point,
r.name,
r.value
From 
 ((sample s
INNER JOIN test t ON s.id_numeric=t.sample)
INNER JOIN result r ON t.test_number=r.test_number) 
Where 
 s.login_date between '01-Dec-04'
 And '01-Apr-05'
 And s.sampling_point = 'CWTEST' 
Order By 
1,
2,
3,
4

 

DCPP All Data - Hunter Client UI View

Hunter DCPP All Data

 

DCPP SQL Query Generated - HunterQueryEngine

Select 
s.id_numeric,
s.id_text,
s.sampling_point,
r.name,
r.value
From 
 ((c_sample s
INNER JOIN c_test t ON s.id_numeric=t.sample)
INNER JOIN c_result r ON t.test_number=r.test_number) 
Where 
 s.login_date between '01-Dec-04'
 And '01-Apr-05'
 And s.sampling_point = 'CWTEST'  UNION ALL Select
s.id_numeric,
s.id_text,
s.sampling_point,
r.name,
r.value
From 
 ((sample s
INNER JOIN test t ON s.id_numeric=t.sample)
INNER JOIN result r ON t.test_number=r.test_number) 
Where 
 s.login_date between '01-Dec-04'
 And '01-Apr-05'
 And s.sampling_point = 'CWTEST' 
Order By 
1,
2,
3,
4

 

The key in this example is to notice how the Hunter Client end user's view of the query is the same.  The user interface is consistent and a user in DECT could easily build the query for the DCPP user.  Once the query object that was built by the end user is sent to the HunterQueryEngine, the HunterQueryEngine has the flexibility to build the correct query for the data source.  The SQL queries in each case are very different.  In the DECT case, data is archived by year so the SQL query generated determines which sets of tables need to be searched (3 - 2004, 2005 and current).  In the DCPP case, there are only 2 sets of tables - current data and archived data.

 

The UI view is the same.  The SQL generated is completely different even though both users are attempting to perform similar queries.

 

The new split architecture of the Hunter Client UI and HunterQueryEngine web service, allows Cyberwolf Software to adjust the product for any customer's special data situations.