2023.1:Grooper Infrastructure (Concept): Difference between revisions

From Grooper Wiki
No edit summary
No edit summary
Line 53: Line 53:
| FileId || uniqueidentifier || 16 || guid assigned as the name of the object (stored in the filestore with this number followed by .grp)
| FileId || uniqueidentifier || 16 || guid assigned as the name of the object (stored in the filestore with this number followed by .grp)
|-
|-
| NodeId || uniqueidentifier || 16 || guid associated with node from grooper tree
| NodeId || uniqueidentifier || 16 || guid associated with node from '''Grooper''' tree
|-
|-
| FileStoreId || uniqueidentifier || 16 || guid given to the node referencing the file store
| FileStoreId || uniqueidentifier || 16 || guid given to the node referencing the file store
Line 107: Line 107:
| MachineName || varchar || 256 || hostname of machine using the license
| MachineName || varchar || 256 || hostname of machine using the license
|-
|-
| ModuleName || varchar || 256 || Grooper module occupying the license
| ModuleName || varchar || 256 || '''Grooper''' module occupying the license
|-
|-
| CheckoutTime || datetime || 8 || date and time the license was checked out
| CheckoutTime || datetime || 8 || date and time the license was checked out
Line 118: Line 118:
! Column Name !! Data Type !! Size !! Description
! Column Name !! Data Type !! Size !! Description
|-
|-
| NodeId || uniqueidentifier || 16 || guid of node from grooper hierarchy tree
| NodeId || uniqueidentifier || 16 || guid of node from '''Grooper''' hierarchy tree
|-
|-
| UserName || varchar || 64 || windows user that applied the unlock
| UserName || varchar || 64 || windows user that applied the unlock
Line 124: Line 124:
| MachineName || varchar || 64 || hostname of the machine where the unlock occurred
| MachineName || varchar || 64 || hostname of the machine where the unlock occurred
|-
|-
| ModuleName || varchar || 64 || Grooper module that executed the unlock
| ModuleName || varchar || 64 || '''Grooper''' module that executed the unlock
|-
|-
| ProcedureName || varchar || 64 || the procedure executed to apply the unlock
| ProcedureName || varchar || 64 || the procedure executed to apply the unlock
|-
|-
| CreateDate || smalldatetime || 4 || date and time the unlock occured
| CreateDate || smalldatetime || 4 || date and time the unlock occurred
|}
|}
'''dbo.Log'''
'''dbo.Log'''
* This table contains the '''Grooper''' log, which is represented in the Event Viewer of Grooper Design Studio.  
* This table contains the '''Grooper''' log, which is represented in the '''Event Viewer''' of '''Grooper Design Studio'''.  
:: {| class="wikitable"
:: {| class="wikitable"
! Column Name !! Data Type !! Size !! Description
! Column Name !! Data Type !! Size !! Description
Line 145: Line 145:
| Message || varchar(MAX) || -1 || message displayed in and defining, in general, the event
| Message || varchar(MAX) || -1 || message displayed in and defining, in general, the event
|-
|-
| UserAccount || varchar || 64 || windows user under which the event triggerd
| UserAccount || varchar || 64 || windows user under which the event triggered
|-
|-
| MachineName || varchar || 64 || hostname of the machine under which the event triggered
| MachineName || varchar || 64 || hostname of the machine under which the event triggered
|-
|-
| NodeId || uniqueidentifier || 16 || guid of parent node associated with with ‘NodeName’
| NodeId || uniqueidentifier || 16 || guid of parent node associated with ‘NodeName’
|-
|-
| NodeName || varchar || 256 || Item Name, or name of node associated with the triggering of the event
| NodeName || varchar || 256 || Item Name, or name of node associated with the triggering of the event
|-
|-
| NodeType || varchar || 64 || type of Grooper Node defining the ‘NodeName’
| NodeType || varchar || 64 || type of '''Grooper''' Node defining the ‘NodeName’
|}
|}
'''dbo.NodeReference'''
'''dbo.NodeReference'''
Line 160: Line 160:
! Column Name !! Data Type !! Size !! Description
! Column Name !! Data Type !! Size !! Description
|-
|-
| NodeId || uniqueidentifier || 16 || guid given to node in grooper hierarchy tree
| NodeId || uniqueidentifier || 16 || guid given to node in '''Grooper''' hierarchy tree
|-
|-
| ReferencingNodeId || uniqueidentifier || 16 || guid of parent node associated with ‘NodeId’
| ReferencingNodeId || uniqueidentifier || 16 || guid of parent node associated with ‘NodeId’
Line 179: Line 179:
| ModuleName || varchar || 256 || module running current task
| ModuleName || varchar || 256 || module running current task
|-
|-
| Status || int || 4 || status of current task (ie-running, error…)
| Status || int || 4 || status of current task (i.e. running, error…)
|-
|-
| UserName || varchar || 256 || windows user that submitted task
| UserName || varchar || 256 || windows user that submitted task
Line 214: Line 214:
| RepositoryId || uniqueidentifier || 16 ||  
| RepositoryId || uniqueidentifier || 16 ||  
|-
|-
| MachineName || varchar || 64 || hostname of pc running Grooper service
| MachineName || varchar || 64 || hostname of pc running '''Grooper''' service
|-
|-
| ServiceName || varchar || 256 || name of Grooper service running
| ServiceName || varchar || 256 || name of '''Grooper''' service running
|-
|-
| TypeName || varchar || 256 || typer of Grooper service running
| TypeName || varchar || 256 || typer of '''Grooper''' service running
|-
|-
| PropertiesJson || varchar || 2048 || json information defining /Node Properties/Properties
| PropertiesJson || varchar || 2048 || json information defining /Node Properties/Properties
|-
|-
| UserName || varchar || 64 || windows user running Grooper service
| UserName || varchar || 64 || windows user running '''Grooper''' service
|-
|-
| Password || varchar || 64 || password of windows user running Grooper service
| Password || varchar || 64 || password of windows user running '''Grooper''' service
|-
|-
| InstanceNo || int ||4  || number of a specific service on a machine
| InstanceNo || int ||4  || number of a specific service on a machine
Line 249: Line 249:
| ProcessingScope || in || 4 || the level of the batch that a step is processing
| ProcessingScope || in || 4 || the level of the batch that a step is processing
|-
|-
| ModuleName || varchar || 256 || name of grooper module
| ModuleName || varchar || 256 || name of '''Grooper''' module
|-
|-
| ModuleDisplayName || varchar || 256 || name of grooper module given to batch process step
| ModuleDisplayName || varchar || 256 || name of '''Grooper''' module given to batch process step
|-
|-
| MachineName || varchar || 256 || hostname of pc running batch
| MachineName || varchar || 256 || hostname of pc running batch
|-
|-
| UserName || varchar || 256 || windows user under witch the batch is running
| UserName || varchar || 256 || windows user under which the batch is running
|-
|-
| StartTime || datetime || 8 || time batch was initiated
| StartTime || datetime || 8 || time batch was initiated
Line 270: Line 270:
| Name || varchar || 64 || DatabaseVersion
| Name || varchar || 64 || DatabaseVersion
|-
|-
| Value || varchar || 1024 || Current installed Grooper Database version
| Value || varchar || 1024 || Current installed '''Grooper''' Database version
|}
|}
'''dbo.TreeNode'''
'''dbo.TreeNode'''
Line 277: Line 277:
! Column Name !! Data Type !! Size !! Description
! Column Name !! Data Type !! Size !! Description
|-
|-
| Id || uniqueidentifier || 16 || The node’s unique ID.  A GUID autogenerated by Grooper.  
| Id || uniqueidentifier || 16 || The node’s unique ID.  A GUID autogenerated by '''Grooper'''.  
|-
|-
| RowId || int || 4 || Identity Column for the table.  Generated by SQL server.
| RowId || int || 4 || Identity Column for the table.  Generated by SQL server.
Line 287: Line 287:
| TypeName || varchar || 64 || The name of the object type of the node
| TypeName || varchar || 64 || The name of the object type of the node
|-
|-
| ParentId || uniqueidentifier || 16 || ID of the node’s parent.  The Grooper Root node has a parent ID with all zeros.
| ParentId || uniqueidentifier || 16 || ID of the node’s parent.  The '''Grooper''' Root node has a parent ID with all zeros.
|-
|-
| NodeIndex || int || 4 || Index of the node in it’s containing object (usually a folder)
| NodeIndex || int || 4 || Index of the node in its containing object (usually a folder)
|-
|-
| Attributes || int || 4 || A flags attribute indicating whether the node has the following attributes: read-only, fixed contents (no children may be added), sorted (children will always show up in alphabetical order), has ACL, is a system object (may not be changed).  
| Attributes || int || 4 || A flags attribute indicating whether the node has the following attributes: read-only, fixed contents (no children may be added), sorted (children will always show up in alphabetical order), has ACL, is a system object (may not be changed).  
Line 297: Line 297:
| Properties || varchar(MAX) || -1 || Column containing the JSON properties for this node.  
| Properties || varchar(MAX) || -1 || Column containing the JSON properties for this node.  
|-
|-
| NodeValues || varchar(MAX) || -1 || metadata about the node that pertains to Grooper modules
| NodeValues || varchar(MAX) || -1 || metadata about the node that pertains to '''Grooper''' modules
|-
|-
| Files || varchar(MAX) || -1 || objects in the grooper file store associated with the node
| Files || varchar(MAX) || -1 || objects in the '''Grooper''' file store associated with the node
|}
|}


Line 313: Line 313:
While the filestore entries are all given .grp extensions, the contents of the file are unaltered from their “actual” form.  If you navigate, for example, to the .grp file associated with an pdf imported using full import, you can open it and view it with a pdf viewer.  The files in the filestore are intentionally obfuscated to prevent users from interacting with them outside of '''Grooper''', as they are essentially '''Grooper-internal''' objects.  
While the filestore entries are all given .grp extensions, the contents of the file are unaltered from their “actual” form.  If you navigate, for example, to the .grp file associated with an pdf imported using full import, you can open it and view it with a pdf viewer.  The files in the filestore are intentionally obfuscated to prevent users from interacting with them outside of '''Grooper''', as they are essentially '''Grooper-internal''' objects.  


Although the majority of files in the filestore relate to batch objects (split pages, imported documents, image processing undo objects, etc.), some files are the result of other in-grooper processes such as layout data, OCR character data, etc.
Although the majority of files in the filestore relate to batch objects (split pages, imported documents, image processing undo objects, etc.), some files are the result of other in-'''Grooper''' processes such as layout data, OCR character data, etc.
===The Application===
===The Application===
This is the most visible aspect of '''Grooper''' as it is the software you interact with that displays the currently active repository.  It consists of several pieces:
This is the most visible aspect of '''Grooper''' as it is the software you interact with that displays the currently active repository.  It consists of several pieces:

Revision as of 11:33, 24 July 2020

Technically speaking, what is Grooper? Grooper is a repository of information made up by 13 tables in a SQL Server Database and associated files in a Windows file share. This information is displayed to the user via an application(s) that displays a 1 to 1 relationship of what exists in that database and fileshare. Gaining an understanding of how to properly create using Grooper begins by first understanding the structure of its architecture, and why it is built the way it is. This sets a foundational groundwork for knowing how to think and interact with the application.

The Three Layers of Grooper

Grooper consists of four main components that constantly interact with one another:

  1. Database
  2. File Store
  3. Licensing
  4. Application

The Database

This is the core component of Grooper as all aspects of the functionality and configuration of a Grooper repository are stored here as metadata in cells of tables. There are 13 tables that make up the Grooper database:

dbo.AccessControlEntry

  • This table contains the information necessary for implementing Grooper’s node-level security architecture.
Column Name Data Type Size Description
Id int 10 unique number referencing the table's row
NodeId uniqueidentifier 16 guid associated with node from Grooper node tree
PrincipalId uniqueidentifier 16
Permissions in 4

dbo.CustomStats

  • Definition incoming ...
Column Name Data Type Size Description
SessionId int 4
Name Varchar 64
Value Float 8

dbo.FileStoreEntry

  • This table contains the information necessary for associating filestore objects with Grooper nodes. Note: a node with associated files will also contain those files’ filestore object locations, names, and mimetypes in the “files” column of TreeNode.
Column Name Data Type Size Description
Id int 4 sequential number assigned to object in row
FileId uniqueidentifier 16 guid assigned as the name of the object (stored in the filestore with this number followed by .grp)
NodeId uniqueidentifier 16 guid associated with node from Grooper tree
FileStoreId uniqueidentifier 16 guid given to the node referencing the file store

dbo.License

  • This table contains information relating to Grooper licensing, including the licensing and tamper keys.
Column Name Data Type Size Description
Id int 4 unique number referencing the table’s row
SerialNumber uniqueidentifier 16 guid of serial number
LicenseText Varchar 1024
CustomerId Varchar 256 number given to customer owning the license
CustomerName varchar 256 string name given to customer owning the license
MachineId varchar 40 unique identifier of the machine which the license was generated for
LicenseCode varchar 50 shorthand for the type of license assigned
LicenseDesc varchar 256 description of the type of license assigned
Quantity int 4 amount of licenses given upon assignment
Expires int 4
ExpirationDate datetime 8 date and time the assigned license expires
ResetInterval varchar 12 basis on which the assigned licenses resets
LastReset datetime 8 date and time the license was last reset
RemainingCount int 4 amount of licenses remaining since assigned
TamperKey varchar 256

dbo.LicenseCheckout

  • This table contains information relating to checked out licenses.
Column Name Data Type Size Description
Id int 4 unique number referencing the table’s row
LicenseCode varchar 50 string defining the license code
LicenseDesc varchar 256 definition of the type of license in use
UserName varchar 256 windows user to whom the license is checked to
MachineName varchar 256 hostname of machine using the license
ModuleName varchar 256 Grooper module occupying the license
CheckoutTime datetime 8 date and time the license was checked out
CheckoutId uniqueidentifier 16

dbo.Lock

  • This table contains one row per locked node; prevents overlapping access to various resources.
Column Name Data Type Size Description
NodeId uniqueidentifier 16 guid of node from Grooper hierarchy tree
UserName varchar 64 windows user that applied the unlock
MachineName varchar 64 hostname of the machine where the unlock occurred
ModuleName varchar 64 Grooper module that executed the unlock
ProcedureName varchar 64 the procedure executed to apply the unlock
CreateDate smalldatetime 4 date and time the unlock occurred

dbo.Log

  • This table contains the Grooper log, which is represented in the Event Viewer of Grooper Design Studio.
Column Name Data Type Size Description
Id int 4 unique row identifier
TimeStamp datetime 8 date and time the event was logged
Type int 4 type of event logged
ProcName varchar(MAX) -1 name of procedure associated with the event
Message varchar(MAX) -1 message displayed in and defining, in general, the event
UserAccount varchar 64 windows user under which the event triggered
MachineName varchar 64 hostname of the machine under which the event triggered
NodeId uniqueidentifier 16 guid of parent node associated with ‘NodeName’
NodeName varchar 256 Item Name, or name of node associated with the triggering of the event
NodeType varchar 64 type of Grooper Node defining the ‘NodeName’

dbo.NodeReference

  • This table contains a list of all referenced nodes, and what other nodes they are referenced by. Used to protect referenced nodes from deletion, and in determining what nodes are necessary on exporting.
Column Name Data Type Size Description
NodeId uniqueidentifier 16 guid given to node in Grooper hierarchy tree
ReferencingNodeId uniqueidentifier 16 guid of parent node associated with ‘NodeId’

dbo.ProcessingTask

  • This table contains tasks submitted for activity processing as part of production batches.
Column Name Data Type Size Description
Id int 4 unique row identifier
BatchId uniqueidentifier 16 guid of batch related to running process
NodeId uniqueidentifier 16 guid of node related to batch in running process
Settings varchar(MAX) -1 json properties of running node
ModuleName varchar 256 module running current task
Status int 4 status of current task (i.e. running, error…)
UserName varchar 256 windows user that submitted task
MachineName varchar 256 hostname of machine running task
PageCount int 4 number of pages in batch being processed
Submitted datetime 8 date/time when processing batch was submitted
Started datetime 8 date/time when processing batch started
Completed datetime 8 date/time when batch process completed
Priority int 4 numeric value (1-5) given to sort batch priority
Scope int 4 the level of the batch that a step is processing
StepNo int 4 current step of batch process
BatchName varchar 256 name of batch in processing
BatchProcessName varchar 256 name of process associated with batch in processing
StepName varchar 256 name of step of process associated with batch in processing

dbo.ServiceInstance

  • This table contains a list of installed services. Note: If an installed service does not have a reference in this table, it will not show up in Grooper Config.
Column Name Data Type Size Description
Id int 4 unique row identifier
RepositoryId uniqueidentifier 16
MachineName varchar 64 hostname of pc running Grooper service
ServiceName varchar 256 name of Grooper service running
TypeName varchar 256 typer of Grooper service running
PropertiesJson varchar 2048 json information defining /Node Properties/Properties
UserName varchar 64 windows user running Grooper service
Password varchar 64 password of windows user running Grooper service
InstanceNo int 4 number of a specific service on a machine
ThreadPirority int 4 numeric value given to service thread to determine processor priority

dbo.SessionStats

  • This table contains statistical information regarding batches in Grooper.
Column Name Data Type Size Description
Id int 4 unique row identifier
BatchId uniqueidentifier 16 guid for batch node
BatchName varchar 256 name of batch
BatchProcessId uniqueidentifier 16 guid of process node related to the batch
BatchProcessName varchar 256 name given to process by end user
StepName varchar 256 name of step in the process
ProcessingScope in 4 the level of the batch that a step is processing
ModuleName varchar 256 name of Grooper module
ModuleDisplayName varchar 256 name of Grooper module given to batch process step
MachineName varchar 256 hostname of pc running batch
UserName varchar 256 windows user under which the batch is running
StartTime datetime 8 time batch was initiated
EndTime datetime 8 time batch ended or was terminated
TasksProcessed int 4 number of tasks processed in batch

dbo.Setting

  • This table contains only the Database version, including build number.
Column Name Data Type Size Description
Name varchar 64 DatabaseVersion
Value varchar 1024 Current installed Grooper Database version

dbo.TreeNode

  • The main Grooper table, TreeNode contains one entry for every object in the Grooper node tree. Composed of the following columns:
Column Name Data Type Size Description
Id uniqueidentifier 16 The node’s unique ID. A GUID autogenerated by Grooper.
RowId int 4 Identity Column for the table. Generated by SQL server.
RowVersion timestamp 8 A timestamp column, updated when the node is changed. Used by certain processes to determine if the node has been updated.
Name varchar 256 The name of the node.
TypeName varchar 64 The name of the object type of the node
ParentId uniqueidentifier 16 ID of the node’s parent. The Grooper Root node has a parent ID with all zeros.
NodeIndex int 4 Index of the node in its containing object (usually a folder)
Attributes int 4 A flags attribute indicating whether the node has the following attributes: read-only, fixed contents (no children may be added), sorted (children will always show up in alphabetical order), has ACL, is a system object (may not be changed).
NumChildren int 4 Number of children.
Properties varchar(MAX) -1 Column containing the JSON properties for this node.
NodeValues varchar(MAX) -1 metadata about the node that pertains to Grooper modules
Files varchar(MAX) -1 objects in the Grooper file store associated with the node

Using a SQL database as the core of Grooper allows for great efficiency. Every property of every object in Grooper, as a result of being a simple entry in a table, can be loaded into memory and accessed nearly instantly. This would not be the case otherwise (if for example Grooper repositories were defined by something like a project file), as file i/o is one of the slowest aspects of modern computing. This also allows the discrete management of objects on an individual basis to allow multiple users to work in one environment and prevent work overlap by locking objects.

The File Store

The File Store in Grooper is a file share in a Windows environment. It houses the files associated with objects in Grooper that have information that would otherwise be inefficient to store in (a cell in) a database table.

The Grooper Filestore exists at a user-specified location. This may be a local or an network path, but if a filestore is given a local path, computers connecting to that repository remotely will not be able to access it. If you want to set up a repository so that other computers can connect to it, make sure you reference the filestore using a UNC path!

The filestore contains three levels of directories. A typical filestore entry will exist on disk as, e.g. 00 > 00 > 00 > [guid].grp. Each of the lowest-level folders in the filestore will have a maximum of 256 files, at which point a new folder at that level will be created. If the lowest level contains 256 folders, a new folder will be created at the level above; this gives the Grooper filestore a limit of 256 ^ 4 = 4,294,967,296 files stored on disk.

While the filestore entries are all given .grp extensions, the contents of the file are unaltered from their “actual” form. If you navigate, for example, to the .grp file associated with an pdf imported using full import, you can open it and view it with a pdf viewer. The files in the filestore are intentionally obfuscated to prevent users from interacting with them outside of Grooper, as they are essentially Grooper-internal objects.

Although the majority of files in the filestore relate to batch objects (split pages, imported documents, image processing undo objects, etc.), some files are the result of other in-Grooper processes such as layout data, OCR character data, etc.

The Application

This is the most visible aspect of Grooper as it is the software you interact with that displays the currently active repository. It consists of several pieces:

  1. Grooper Design Studio
  2. Grooper Config
  3. Grooper Attended Client
  4. Grooper Unattended Client

Every object in the Grooper Node Tree is an object, or row, in a specific table, the dbo.TreeNode table. The GUI of Grooper is essentially wrapping information from the Grooper database, and associated files from the Grooper File Store, into a series of grids and windows that allow you to directly interact with that database, and its related Windows file share, without writing SQL queries.

Licensing

A Grooper license is provided to you after confirmation of purchase. This license key is entered in Grooper Design Studio either on the Licensing tab of the Grooper Root Node or on a License Server object by pressing the Activate Online button. The licensing is ultimately stored on the License Server object, so either of these methods accomplishes the same end goal. This applies the licensing to the Grooper repository that was being represented by Grooper Design Studio upon activation. This license can, subsequently, be hosted from that repository to any other Grooper repository via an instance of a Grooper License Server service pointed at the repository that has an active license.