cancel
Showing results for 
Search instead for 
Did you mean: 

WorkView Views in Version 18

Matthew_Pope1
Confirmed Champ
Confirmed Champ

In version 18 the views are now stored in the database, but I am having trouble locating them.  I see the rmview and rmscreen tables, but these have no data in them.  When I open a view I can see in diagnostics console database tab that it is querying the rmcomponent tables.  After looking into these it appears that this is where the information on views is stored.  How do these rmcomponent tables relate back to the rmobject and rmobjectinstance tables for each class?

10 REPLIES 10

Bill_Schoby
Star Collaborator
Star Collaborator

Matt, this will list all views by application and class

SELECT app.rmApplicationName as AppName
, class.classDisplayName as ClassName
, c.rmName as ViewName
FROM hsi.rmcomponentprop cp
inner join hsi.rmcomponent c on cp.rmcomponentid = c.rmcomponentid and c.rmcomponenttype = 15
inner join hsi.rmclass class on cp.[value] = class.classid
inner join hsi.rmapplicationclasses ac on ac.classid = class.classid
inner join hsi.rmapplication app on app.rmapplicationid = ac.rmapplicationid
WHERE rmcomponentproperty = 105
ORDER BY app.rmapplicationname, class.classdisplayname, c.rmname

Ryan_Wakefield
World-Class Innovator
World-Class Innovator

So I have been looking into this and trying to figure out where/how the different views are constructed based upon the answer above by @Bill Schoby , but I have been unable to come up with anything. I am currently running EP5 (21.1) and I don't have any .html or .xml files in the Resources folder, and then when I go to the hsi.rmresources tab, I don't see anything for the individual views. I see there is hsi.rmview and hsi.rmview*, but none of those are populated.

 

So my question is this, where in word are the details for the views stored?

@Ryan Wakefield the views are in hsi.rmComponent and as the name implies, many components of the views are in this table.  Here is what I have noted by component type:

 

2 = panel
4 = button
12 = label
13 = template name/initial view name
15 = view name; no parent (implementation of a template)
16 = attribute
20 = separator
21 = line break
22 = hyperlink
25 = table
26 = row collection
27 = column collection
28 = individual row
29 = individual column
30 = individual cell
31 = embedded filter
32 = DatagridColumnCollection (autocreated related to embedded filter); parent = embedded filter
33 = DatagridColumn (appears autocreated related on embedded filter, maybe only when filter allows edit mode)
35 = snippet

 

Additional properties about these components are stored in hsi.rmComponentProp.

 

One View and all of the content contained in that view will be represented by many rows in hsi.rmComponent.  Depending on what you want, you may have to join hsi.rmComponent with another instance of the same table, potentially many times.  For example, this query shows the views and their template for each class.  Notice my table alias names to identify the view and the template from two different instances of the same class.

 

 

select 
cView.rmName as ViewName
, prView.rmcomponentid as ViewComponentID
, cView.rmComponentType as VCompType
, cTemp.rmName as TemplateName
, prTemp.rmcomponentid as TemplateCompID
, cTemp.rmComponentType as TCompType
 
, rtrim(app.rmApplicationName) as AppName
, rtrim(class.ClassName) as ClassName
from hsi.rmcomponentprop prView
inner join hsi.rmcomponentprop prTemp on prView.Value = prTemp.Value and prView.rmComponentProperty = 114 and prTemp.rmComponentProperty = 35
inner join hsi.rmComponent cView on cView.rmcomponentid = prView.rmcomponentid
inner join hsi.rmComponent cTemp on cTemp.rmcomponentid = prTemp.rmcomponentid
 
--now bring in the class of the view
inner join hsi.rmcomponentprop prClass on prClass.rmcomponentid = prView.rmcomponentid and prClass.rmComponentProperty = 105
left outer join hsi.rmclass class on prClass.[value] = class.classid
left outer join hsi.rmapplicationclasses ac on ac.classid = class.classid
left outer join hsi.rmapplication app on app.rmapplicationid = ac.rmapplicationid
 

Hey @Bill Schoby ,

 

Thanks for those details. I think the thing that I can't quite seem to figure out is how to determine what components are in what order. In other words, how does the system create the layout that you would see inside of the layout tab inside of Studio? Because I can't seem to figure out where the translation or cross references are made and all.

 

Thanks.