Abstract: There is provided a system for automating processes the system comprising a first computer (102)communicatively coupled to a database (106) the first computer (102) being configured to execute instructions effecting the running of an automated process utilising data stored in the database (106). There is also provided a method of running automating processes the method comprising the steps of providing a first computer (102) communicatively coupled to a database (106) configuring the first computer (102)to execute an automated process and executing the automated process using data stored in the database (106).
Fieid of the invention
The present invention relates to a system for automating processes. More
specifically, it relates to automating processes which are presently carried out by a manual
transfer of information and commands from one system to another or within a single system.
5 Background of the invention
it is often the case that expected, or unexpected, change requires a change in the
way a business must operate. For example, the launch of a new product can require existing
systems to be integrated, new regulation can require the recording of process steps or an
acquisition can require the merging of two product lines and processes. Traditional
18 enterprise system planning and rollou% can absorb these issues; however, these planning
cycles are designed for large projects, not supporting everyday operational change. As a
result, changes are implemented at great cost and sometimes only over many years, as new
systems replacing the functionality of the original systems and providing the required new
functi~nalitym ust be developed and require extensive testing and quality assurance before
15 they can reliably be implemented. These systems must also be designed and configured by
people with the required specialist skills in computer programming and application
development. This adds more time to the development process since there are often
relatively few people, if any, with the required skills within an organisation and, e once such
systems are implemented, the time it takes for users of the original systems to become
20 acquainted with the new systems can be long and the process is often characterized by
inefficiency and inaccuracy.
The problem arises because back office business processes can often involve
multiple independent and incompatible s~ftware applications. Some of these software
25 applications may have APls which facilitate the transfer of information in or out of an
application by providing a predefined interface through which another software application
may interact; however this is not always the case. For example, many of the software
applications used in these back office business processes are old applications designed
without the features required to allow easy access by other software applications. Others are
30 custom in-house s~ftwares olutians created to sewe a very specific purpose where the need
to provide an interface through which other applications could interact was not foreseen.
Traditionally, this is overcome by using operational staff to bridge the gap between these
software applications. The use of operational staff is an expensive solution, since large
numbers of operational staff may need to be employed to provide the capacity required.
Since the gap between these incompatible software application or systems is bridged by a
human, the process is typically slow since operational staff only work for part of the day, are
limited by the speed a%w hich they can input information or commands using a keyboard and
mouse or any other interface and are limited by the speed at which they can read
5 information from a screen or other output. Furthermore, humans are susceptible to errors in
input of data or commands to a system and in reading information from another, which a
computer is not. There also exists the possibility, when operational staff are used in such a
manner, that malicious interference with processes, systems and data can occur.
For example, a telecoms provider may launch a new mobile phone handset which
16 requires the use of existing software applications and new systems which may be
incompatible. This shortfall is usually filled by operational staff, but often it is not possible to
predict the demand for such newly launched products and so too many or too few staff are
trained to use the software systems, it is, therefore, desirable to fill this gap between
incompatible software systems with a solution which allows for rapid scaling to cope with
115 demand, without requiring detailed knowledge of the demand up-front.
In such systems, large volumes of information, which may be sensitive personal
information are often handled. It is also desirable to handle this information in a consistent
manner which reduces the number of errors that may be associated with a human simply
copying information from one system to another and it is also desirable to handle the
20 information in a private and secure manner which is only accessible when absolutely
necessary.
These problems, which require operational staff to fill in where pre-existing software
applications fall short of the functionality required for a new process to be implemented, are
not unique to the business back office. FOP example, the reception of a hospital or doctor's
25 surgery is ofen a busy environment with many patients arriving for appointments.
Receptionists spend a lot of time carrying out routine tasks such as taking details from
patients arriving for appointments and inputting them into a software application which
checks the patient in for their appointments. This process is often slow, can be inaccurate
due to patient details being misheard and takes away the receptionists9 time from carrying
30 out other duties.
it may be desirable to provide self-service check-in kiosks in the reception of the
hospital or doctor's surgery which enable patients arriving to input their own details to the
system so %ha%in accuracies are minimised, receptionists are free to deal with other tasks
and waiting times are reduced. However, to provide a patient with the same interface as that
provided to the receptionist may not be appropriate, since the software applications used by
the receptionist is likely to have more advanced features that are unnecessarily confusing to
the patient or the application may have administrative controls or access to information that it
would be inappropriate to provide to patients using a self-service check-in kiosk. Unless the
5 existing receptionist application provides the capability for a new application which is run on
the self-service kiosks to access certain functions and features, the same long planning
cycles, expense, inefficiency and inaccuracy associated with change in back office business
processes apply when new software applicati~nsa nd systems which provide the required
functionality to implement these systems are developed. This often results in such projects
10 never being undertaken.
18 is an object of the present invention to overcome one or more of the above
described problems.
Summay of the [nvention
Yn a first aspect of the invention there is provided a system for running automated
15 processes. Yn a first embodiment, the system comprises a first computer communicatively
coupled to a database, the first computer being configured to execute instructions effecting
the running of an automated process utilising data stored in the database.
Preferably, the da%abase is stored on a database server. Alternatively, the database
is stored on the first computer or the database is stored on a second computer.
20 Preferably, the first computer is configured to host at least one virtual machine and
the at seast one virtual machine is configured to execute the automated process.
[801] Preferably, the system fudher comprises an application server. The application
server may be hosted on a second computer acting as a dedicated server or the first
computer may be configured to host the application sewer.
25 in a second embodiment of the first aspect of the invention, a further system for
running automated processes comprising is provided. The system comprises at least one
database server, at least one application sewer and a% least one virtual machine, wherein
the at least one virtual machine is eomrnunicatively coupled with the at least one database
server and the at least one application server and wherein, the a% least one application
30 server is configured to provide instructions to the at least one virtual machine to execute an
automated process and the at least one virtual machine is configured to execute automated
processes according to the provided instructions utilising data stored in the database.
Pn a third embodiment of the first aspect of the invention, a further system for running
au%omated processes is provided. The system comprises the features of the second
embodiment, wherein the at %easot ne database server, at least one application server and at
least one virtual machine form a first set. The system further comprises a second set of at
5 least one database server, at least one application server and at least one virtual machine,
wherein the first and second sets are communicatively coupled such that the at least one
application server of each set and the at least one database of each set may communicate
with each other, at least one application server of one of the sets is configured to provide
ins%ructionsto the at seast one virtual machine of at least one of the first and second sets and
10 the at least one database server of the second set is a mirror of the at least one database
server of the first set.
Preferably, the at least one application server of at least one set is configured to
manage the connection of the at least one virtual machine of the at least one set to the one
or more database servers of the at least one set.
15 Also preferably, the at least one application server of the at least one set contains
database sewer credentiais for securely accessing the at least one database server of the at
least one set.
[OO21( The a% least one set may further comprise a communication server communicatively
coupled with the at least one virtual machine of the at least one set and the at least one
20 database server of the at least one set and the communication server is configured to
manage the connection of the at least one virtual machine of the at least one set to the at
least one database server of the at least one set.
The at least one database server may hold multiple databases.
The at least one virtua! machine may comprise a standard end-user desktop
2% opera%ings ystem.
Preferably, the at least one virtual machine comprises more than one virtual
machine, and the virtual machines are grouped into at least one resource pool.
Preferably, the at least one resource pool comprises a controller and the controsler
may be a vir%uaml achine within the at least one resource pool.
[003] Preferably, the controller of the at least one resource pool is configured to update a
database record with a timestamp which contains the identity of the virtual machine acting as
the controller of the at least one resource pool.
1004% Preferably, all virtual machines within the at least one resource pool are configured to
5 receive instructions from the at least one application server and are configured to forward
the instructions from the a% least one application server to the virtual machine acting as the
controller of the at Peast one resource pool.
Preferably, each of the virtual machines of the at least one resource pool is
configured to take over as controller of the at least one resource pool by updating the
46 database record containing the identity of the virtual machine acting as the controller of the
at least one resource pool if the current controller of the at least one resource pool ceases to
function.
the controller of the at least one resource pool may be the application server.
[0051] Further alternatively, the controller of the at least one resource pool of the first and
45 second sets may be a master application sewer.
The at $east one virtual machine may be further configured to carry out the
automated processes by interacting with one or more of: an accessibility interface, an
exposed AP% and the presentation technology of an operating system.
The a% least one virtual machines may be further configured to carry out the
28 automated processes by interpreting HTML elements within a HTML document.
The at least one virtual machine may be configured to carry out the at least one
automated process by identifying the font used by the text in a defined region of the user
inte~acea nd identifying the characters of the text in the defined region of the user interface
using the identified font.
Preferably, the system further comprises a terminal configured to observe the
automated processes carried out by the one or more virtual machines.
Rn the third embodiment of the first aspec% of the invention, the first and second sets
may be connected by a wide area network connection, Alternatively, the first and second
se%s may be connected by a local area network.
KO061 Also in the third embodiment of the first aspect of the invention, the first and second
sets may be located at different physical sites.
Also in the third embodiment of the first aspect of the invention, the second set may
be inactive until activated upon failure of the first set.
5 Preferably, in the third embodiment of the first aspect of the invention, the at least
one application server of the first and second sets is configured to manage the connections
sf the at least one virtual machine of each set to the at ieast one database server of both
sets.
Preferably, in the third embodiment of the first aspect of the invention, the at least
10 one application server of each set contains database server credentials for securely
accessing the at least one database server of both sets.
Preferably, the automated processes are defined by a user and configured to be
carried out on data from one or more of software systems, databases or stored files or
documents.
15 Preferably, in the third embodiment of the first aspect of the invention, the number of
virtuai machines in the a% least one resource pool of the first set is the same as the
configuration of and the number of virtual machines in the at least one resource pool of the
second set.
Preferably, the at least one virtual machine is configured such that remote access is
20 limited to providing instructions to execute automated processes, shutdown the at least one
virtual machine, restart the at least one virtual machine and start up the at least one virtual
machine.
Preferably, at least one password required to access specific software applications is
stored within an encrypted credential store on the at least database server. Also preferably,
25 the at least one virtual machine is configured to update the at least one password stored
within the encrypted credential store to a random password not known outside the system.
In a second aspect sf the invention there is provided a method for running automated
processes. in a first embodiment of the second aspect, a method of running automating
processes comprises the steps: providing a first computer communicatively coupled to a
30 database, configuring the first computer to execute an automated process and executing the
automated process using data stored in the database.
Preferably, the database is stored on a database server. Alternatively, the database
may be stored on the first computer or the database may be stored on a second computer.
Preferably, the step of configuring the first computer comprises configuring the first
computer to host at least one virtual machine on the first computer and configuring the at
5 least one virtual machine to execute the automated process.
Preferably, %he method of the first embodiment further comprises the step of
providing an application sewer. The method may comprise configuring the firstcomputer to
host an application server or providing a dedicated server and hosting the application server
on the dedicated server.
in a second embodiment of the second aspect of the invention, a method of running
automated processes is provided, comprising: providing at least one database sewer, at
Peast one application sewer and at least one virtual machine, wherein the at least one virtual
machine is communicatively coupled with the at least one database server and the at least
one application server, providing, with the application server, instructions to the at least one
15 virtual machine to execute an automated process and executing the automated process on
the at least one virtual machine according to the provided instructions utilising data stored in
the database.
On a third embodiment of the second aspect of the invention, a method of running
automated processes is provided. The method comprises all of the steps of the second
26 embodiment, wherein the at least one database server, at least one application server and at
least one virtual machine form a first set and further comprising the steps: providing a
second set of at least one database server, a% least one application server and at least one
virtual machine, wherein the first and second sets are communicatively coupled such that
the at least one application server of each set and the at least one database of each set may
25 communicate with each other; configuring at least one application server sf one of the sets
to provide instructions t~ the at least one virtual machine of at least one of the first and
second sets; and mirroring the at least one database server of the first set on the at least
one database server of the second set.
Preferably the at least one application server of at least one set: manages the
30 connection of the at least one virtual machine of the at leas% one set to the one or more
database servers of the at least one set.
Also preferably, the at least one application server of the at least one set contains
database server credentials for securely accessing the at least one database server of the at
%easot ne set.
The at least one set may further comprise a communication server communicatively
5 coupled with the at least one virtual machine of the at least one set and the at least one
database server of the at least one set and the communication server may manage the
connection of the at least one virtual machine of the at least one set to the at least one
database server of the at least one set.
The a% least one database server may hold multiple databases
The a% least one virtual machine may comprise a standard end-user desktop
operating system.
Preferably, the at [east one virtual machine comprises more than one virtual
machine, and the virtual machines are grouped into at least one resource pool.
Preferably, the at least one resource pool comprises a controller and the controller is
"% 5 virtual machine within the at least one resource pool.
Preferably, the controller sf the at least one resource pool updates a database record
with a timestamp which contains the identity of the virtual machine acting as the controller of
the at least one resource pool.
Also preferably, all virtual machines within the at least one resource pool receive
28 instructions from the at least one application sewer and forward the instructions from the at
Peast one appsication server to the virtual machine acting as the controller of the at least one
resource pool.
Also preferably, each of the virtual machines of the at least one resource pool is able
to take over as controller of the at least one resource pool by updating the database record
25 containing the identity of the virtual machine acting as the controller of the at least one
resource pool if the current controller of the a% least one resource pool ceases to function.
The controller of the at least one resource pool may be the application server.
The controller of the at least one resource pool of the first and second sets may be a
master application sewer.
The at least one virtual machine may carry out at least one automated process by
interacting with one or more of: an accessibility interface, an exposed BPI and the
presentation technology of an operating system.
The at least one virtual machine may carry out at least one automated process by
5 interpreting HTML elements within a HVML document.
The at least one virtual machine may carry out at least one automated process by
identifying the font used by the text in a defined region of "re user interface and identifying
the characters of the text in the defined region of the user interface using the identified font.
Preferably, the method further comprises providing a terminal to observe the
10 automated processes carried out by the one or more virtual machines.
In the third embodiment of the second aspect of the invention, the first and second
sets are connected by a wide area network connection. Alternatively, the first and second
sets may be connected by a local area network.
Also in the third embodiment of the second aspect of the invention, the first and
%5 second sets may be located at different physical sites.
Also in the third embodiment of the second aspect of the invention the second set
may be inactive until activated upon failure of the first set.
Preferably, in the third embodiment of the second aspect of the invention, the at least
one application server of the first and second sets manage the connections of the at least
20 one virtual machine of each set to the a% least one database server of both sets.
Preferably, in the third embodiment of the second aspec%o f the invention, the at least
one application server of each set contains database server credentials for securely
accessing the at least one database server of both sets,
Preferably, the automated processes are defined by a user and are carried out on
25 da%afr om one or more of software systems, databases or stored files or documents.
Preferably, the configuration of and the number of virtual machines in the at least one
resource pool of the first set is the same as the configuration of and the number of virtual
machines in the at least one resource pool of the second set.
Preferably, remote access to the at least one virtual machine is limited to providing
instructions to execute automated processes, shutdown the at least one virtual machine,
restart the at least one virtual machine and start up the at least one virtual machine.
Preferably, at least one password required to access specific software applications is
5 stored within an encrypted credential store on the at least one database server.
Preferably, the at Peast one virtual machine updates the at least one password stored
within the encrypted credential store to a random password not known outside the method.
Brief Description of the Drawings
Figure ? is a schematic of an implementation of a system according to the present
'1 6 invention.
Figure 2 is a schematic of an alternative implementation of a system according to the
present invention.
Figure 3 is a schematic of an alternative implementation of a system according to the
present invention.
15 Figure 4 is a schematic sf an alternative implementation of a system comprising
multiple database sewers according to the present invention.
Figure 5 is a schematic of an alternative implementation of a system comprising
multiple application servers according to the present invention.
Figure 6 is a flow chart depicting a method of defining and scheduling the processes
20 to be automated.
Figure 7 is a flow chart depicting a method of identifying characters in a designated
area of a graphical user intetface.
Detailed Description of the invention
The present invention will now be described with reference to the figures.
A system for automating processes, according to a first embodiment of the present
invention, comprises a computer which is configured to execute automated processes in
communication with a database which holds data u%ilised in the automated precesses. The
database may be stored on the computer configured to execute the automated processes, or
may be stored on a second computer or a dedicated database server. Throughout this
specification, the term "server" should be considered to encompass both software and
dedicated hardware servers, unless otherwise explicitly stated. The computer may itself be
configured to execute the automated processes, or may be configured to host one or more
5 virtual machines which are configured to execute the automated processes. The system may
also further include a terminal which can be used to configure and run the automated
processes.
Figure 1 is a schematic of a system implemented according to one variation of the
first embodiment of the present invention in which at least one virtual machine is utilised.
10 The system 100 comprises at least one computer which is configured to host the at least one
virtual machine 102, a database server 106 and a terminal 108.
The virtual machines 102 are configured to execute one or more automated
processes using applications stored on the virtual machines and data stored on the
database server 106. The execution of the automated processes on the virtual machines
15 102 may be controlled by the terminal 108. The terminal 108 may be configured to allow the
definition of schedules defining the processes to be executed on the virtual machines 102.
The system may also include an application server. The application server may be
hosted on the same physical computer as the virtual machines andfor the database, or may
be hosted on a separate dedicated computer or server. The function of the application server
20 will be described in more detail with reference to the following figures.
Figure 2 is a schematic of a system 200 implemented according to a second
embodiment of the present invention. The system 200 comprises a plurality of virtual
machines 202, an application server 284 and a database. The database may be hosted on a
database server 206 in a preferred embodiment which is discussed below. The application
25 server 204 may be a single physical server or a virtual server. Similarly, the database server
266 may be a single physical server or a virtual server.
The virtual machines 202, application server 204 and database server 206 are
networked such that they may communicate with each other. The system 200 is configured
such that the application server 204 allocates automated processes to the virtuai machines
30 202 for execution. The automated processes allocated by the application server 204 and
executed by the virtual machines 202 are processes defined by a user to be carried out on
data present in one or more of software systems, databases, stored files or documents.
in the second embodiment, the virtual machines 202 are persistent virtualised
instances of standard end-user operating systems, preferably Microsoft Windows@.
Preferably, the virtual machines 202 exist on one or more secure servers which cannot be
accessed, physically or remotely, without appropriate security clearance or authentication.
5 The servers on which the virtual machines exist preferably run Type 'I hypervisors such as
VMware ESXB; however, it will be appreciated that any suitable arrangement of hardware
and software permitting the creation and running of virtual machines may be used. The
virtual machines 202 are headless in the sense that they do nat have a connected monitor or
similar output device which displays a graphical output. By running multiple virtual machines
78 202, multiple automated processes may be carried out simultaneously to improve
productivity or serve multiple external users concurrently.
Preferably, remote access to the virtual machines 202 is restricted once they have
been configured. The ability to remotely restart, shutdown and start up the virtual machines
202 is the only remote access required except for the capability for the at least one
1% application server 204 to provide instructions to the virtual machines 202 to execute a
process. Such an arrangement provides additional security to the system, since it is not
possible to remotely intetfere with the automated processes running on the virtual machines
202. This arrangement also provides additional security over the use of operational staff to
carry out the processes which are automated on the virtual machines 202. It is not possible
20 to maliciously or accidentally carry out the process in a different manner for different data
without the correct authorisation, and the authorisation does not need to be provided to
anyone who is not administering the system.
Where passwords are required to access applications essential to the automated
processes running on the virtual machines 202, the passwords are stored in an encrypted
25 credential store. Preferably, the credential store will be encrypted using Triple DES and be
stored on the database server, although any suitable encryption standard can be used and
the credential store may be stored in any suitable location, such as on the application sewer
or the virtuai machine. The automated processes can be configured such that the passwords
stored in the credential store are periodically updated to a secure, random password which
38 is not known outside the system 200. Since the passwords protecting applications which
have access to sensitive information such as customer information, bank details etc. are
stored in an encrypted credential store on the virtual machines 282 and are not provided to
sperationai staff, the security of these systems and applications and the information
contained within is greatly improved. Requests for credentials from the credential store may
35 also be authenticated on the basis of the ID of the virtual machine 202 and the ID of the
process requesting the credential. This ensures that only authorised machines and
processes can be granted access to the information within the credential store. The virtual
machines 202 may authenticate with application servers 204 using a Windows Credential
Provider.
System administrators and users can, optionally, be authenticated using Microsoft
Active Directory, linking their roles and permissions to an existing domain structure.
The application server 204 is eonfigured to manage the connections sf the virtual
machines 202 to the database sewer 206. The application server 204 holds the database
server security credentials, such as for Windows Authentication or SQL Authentication, and
10 behaves as a secure connection proxy for the database such that all of the virtual machines
202 communicate with the application server 204 and the application server 204
communicates securely with the database server 206 on behalf of the virtual machines 202.
This arrangement allows the application sewer 204 to be the only place within the system
200 which needs to store the database server security credentials with the correct
15 authentication to access and modify the data stored on the database server 206. Since the
database server security credentials are only stored in one place within the system 200, the
security of the system is improved over the storage of security credentials on each virtual
machine 202 and also provides improved security over current multiple user multiple
password systems.
20 The database server 206 is preferably a SQL Server database. The database server
206 holds one or more SQL Server databases which hold a repository of processes and
objects related to the automated processes, user credentials, audit information, process logs
and workflow configuration and scheduling information for the automated processes. Multiple
SBL schema can be present on one database server 206, permitting different virtual
25 machines 202 to execute different automated processes referring to different sets of
information stored within the database of the database server 206.
The database server 206 also stores work queues. Work queues enable data
requiring processing to be stored in order to enable distribution across the system of the
processes to be executed on the virtual machines 202. Process stage information, which is
30 simply a number, for example, indicating the current stage of a process enabling the process
to be paused and resumed, and exception details are also stored in the work queues, Data
are populated into the work queues either via direct database population, APls or by the
VMs accessing an existing workflow system or some other information store such as a
spreadsheet, email or other file mechanism and using the queue to hold a reference to each
item worked. For example, a process to be automated may involve reading data from one or
more files and carrying out an action in response to or on %he data. Once the data has been
read from the one or more files, it may be stored in a work queue such that the virtual
machines 202 can take data from the work queue with or on which to carry out a process.
Work queues can also be encrypted, providing a further layer of security for the data
within the work queue. The data which is stored in work queues may inciude, for example,
personal details of customers including bank details, addresses, birth dates etc., or many
other examples of sensitive information. Hence, such security is important in some
embodiments.
10 The terminal 20% is used to define the automated processes to be run on system
200, as described in relation to Figure 3, and to view the virtual machines 202. The terminal
208 may also be used to define schedules of automated processes to be carried out on the
virtual machines 202 and for administrators to view, start and stop processes running on the
virtual machines 202 manually. The processes may be started and stopped outside of the
'15 scheduling system using the terminal 208.
Pn the second embodiment, the application server 204 is configured to carry out
defined schedules by providing instruction(s) to the virtual machines 202 to execute
individual processes.
Alternatively to the application sewer 204 controlling both the scheduling of
20 processes and managing the connections of the virtual machines 202 to the database server
206. The application server 204 may only be responsible for the scheduling of processes,
and a separate application or server may be configured to manage the connections of the
virtual machines 202 to the database server 206.
Carrying out processes, which are presently typically carried out by operational staff,
25 can the system described herein allows the steps of the process to be carried out consistently
and without error, and a%so allows the process steps to be recorded. Recorded process
steps can be analysed to improve the speed at which processes are carried out and also to
improve the processes themselves.
Figure 3 depicts a system 300 in accordance with a third embodiment of the
30 invention. The systems 300a and 300b each consist of virtual machines 302a and 302b,
application servers 304a and 304b and database servers 306a and 306b. As previously
discussed in relation to the second embodiment, the application servers 304a and 304b and
database servers 306a and 306b may be physical servers or virtual servers or a combination
thereof, they may be single servers or multiple servers and set up in any way previously
described. Network 308 connects the application servers 304a and 304b and database
servers 306a and 306b. Network 388 may be a LAN or a WAN. The systems 300a and 300b
5 may be disposed at the same site or at different sites.
Preferably, the scheduling and allocation of processes to virtual machines 302a and
302b across both systems 300a and 300b is carried out by one of the application servers
304a and 3041. In this case, if one of the application servers 304a and 304b fails, or one of
the systems 300a and 300b fails, the scheduling and allocation of automated processes can
"l be taken over by the other of one of the application servers 304a and 304b, if necessary. In
this way, execution of automated processes can continue on at least one of the sets of
virtual machines 302a and 302b.
Alternatively, a master application server may be responsible for the scheduling and
allocating of processes to virtual machines 302a and 302b across both systems 300a and
"% 300b. This arrangement also allows the execution of processes on the virtual machines 302a
and 302b to continue on at least one set of the virtual machines 302a and 302b should one
of the systems 308a and 300b or one of the application servers 304a and 304b fail.
The database server 306b is a mirror of database server 306a. This configuration
caters for the failure of an application server 304a or 304b or a database server 306a or
20 306b, or both. If systems 300a and 300b are located at different sites, then this configuration
will enable the execution of the automated processes to continue at the second site should
one of the sites fail, for example, due to a power outage. Alternatively, system 300b may be
located at the same site or a separate site and be initially inactive, becoming active upon a
failure at the first site. In the event of a failure, the application server 304a or 304b of the
25 functioning set adjusts the allocation of processes. Pn the case that a master application
sewer is responsible for the scheduling and allocation of processes, the master application
server may adjust the allocation of processes,
Figure 4 depicts an alternative to the second and third embodiments in which multiple
database servers 206 may be present in the system, ln the following example, three
30 database servers are discussed, but this is merely exemplary. The database servers 406a,
406b and 406c may each hold different databases and the applications server 404 may be
associated with all of the database servers 4OBa, 406b and 406c. Alternatively, there may be
multiple application sewers 404 and each application server may hold the credentials for all
of the database servers 406a, 40% and 406c. On a further alternative, the number of
application servers 404 may equal the number of database servers 406a, 406b and 486c
where each application sewer 404 may hold the credentials for only one database 406a,
406b or 406c. Such an arrangement of multiple databases allows for multiple distinct sets of
automated processes to be run using the same virtual machines 402 while referencing
5 different databases.
Where multiple database servers 406a, 406b and 406c are used, the database
servers 40 may be configured %o hold the same database, with one or more of the database
servers 206 being a mirror of a master database server. This arrangement provides
redundancy and should one of the servers stop functioning, allows the processes executed
10 on the virtual machines 202 to continue.
Figure 5 depicts a further alternative to the above described second and third
embodiments, in which there may be more than one application server 204. The application
servers 504a, 504b and 5046 may all be dedicated servers, all virtual servers or a
combination thereof. In an embodiment in which there are multiple application servers 204,
15 one server may be nominated as a master scheduler server, which is in charge of carrying
out the scheduling and issuing instructions to the virtual machines 202 to execute processes.
Each of the application servers 204 maintains a duplicate set of credentials for
authentication with the database server 206. Such an arrangement of the application servers
504a, 504b and 504c creates redundancy in the system which provides a failsafe should one
20 or two of the application servers 504a, 5Q4b and 504c fail, allowing the automated processes
running on virtual machines 502. It will be appreciated that the number of application servers
in such an arrangement may be any number greater than two and that three are depicted
here as an example.
Figure 6 shows a flow chart 600 of the process of defining the automated processes
25 which are to be executed on the virtual machines 202.
The automated processes carried out by the system 100, 200, 300, 408 or 500 may
involve getting information from or inputting information into software applications. For
software applications without an existing, dedicated API, enabling interaction with other
software applications and the automated processes is achieved by creating computer
30 interactive objects which may be accessed by the automated processes to both input and
output information from the software applications. This process is carried out in step 602
according to the following methods.
Yf the existing software application implements accessibility features for example,
Java applications and applets that implement the Java Accessibility APl or Windows
applications which implement the Microsoft Active Accessibility APl or lAccessible2, it is
possibie to capture the accessibility interface definitions and use these to create computer
5 interactive objects.
Alternatively, if the application is an HTML web application or document, it is possible
%o parse the HTML of the web page to identify HTML elements and use these definitions to
create computer interactive objects linked to the web application which may be accessed by
the user defined processes.
'1 0 A preferred HTML parser uses the Document Object Model (DOM) implementation
provided by Microsoft internet Explorer's MSHTML PHTMLDocument2 interface. ln an
embodiment, this is combined with attributes of the GUI window in which the HTML web
application or document is displayed, the URL of the H"TL web application or document
and the HTML path in order to create unique identifiers for the computer interactive objects.
15 Computer interactive objects may also be defined for software applications with
existing exposed APls, such as using Window objects, DDE, HLLAPI interfaces for
mainframe terminals and hooking COM components, such that they are accessible by the
automated processes in the same manner as the computer interactive ob~ects defined for
s~ftwarea pplications without existing APls. The presentation layer, i.e. the user interface as
20 it is presented on the screen, can also be used to define computer interactive objects and to
interpret the controls sent to an application. This may be achieved by using the presentation
technology: underlying components within that application and the application's host
operating system that are responsible for communicating and drawing the windows and
controls that a user sees and which handles the user's interactions with them, e.g. the
25 underlying control, mouse and keyboard messages between Windows and the application
and the applications' COM components that manage the controls and handle the users
C interactions.
The previously discussed methods of creating computer interactive objects linked to
software applications which may be accessed by the user defined processes rely upon
30 specific features of the implementation of the software. However, these features are not
always present. Thin-client applications may run on a separate computer system to the
system with which a user interacts with keyboard and mouse input and graphical output,
providing only a graphical user interface (GUl) at the user's system. In the system of the
present invention, the automated processes may need to interact with a thin client
application and, since the only component of the thin-client application which is present on
the system on which the automated process is executed is the GUl of the thin client
application, the only possible interface from which to create a computer interactive object is
the GUY.
A computer interactive object relating to the GU1 of an application, such as in the
case of a thin-client application, can be created, according to an embodiment of the
invention, by defining regions of the GUl to be interpreted as input or output fields. If the
defined region is an output field, then the contents of the field are interpreted by identifying
the font used in the defined region, identifying the characters of the text in that defined
10 region by comparing them to characters of the identified font and outputting the identified
characters as a string, which can be interpreted on the computer system. The method of
interpreting text displayed in the GUI is discussed below, in relation to Figure 7.
in step 604, once computer interactive objects have been defined for the software
applications required for use in the automated processes, sessions are defined to make use
"1 of the defined computer interactive objects as well as database information, stored files and
documents. Sessions are the pre-defined individual processes run on the virtual machines
202. The actions which make up a session may consist of locating a file, reading in data
from the file and placing the data in a work queue, for example.
In step 6Q6, the sessions defined in step 684 are grouped into tasks. Tasks are
28 collections of sessi~nsw hich are grouped together and executed in parallel. Within a task,
individual sessions are allocated to a particular virtual machine 202 or resource pool, such
that when the task is executed, the application server 204 transmits instructions to the virtual
machines 282 or resource pool to carry out the session or sessions allocated to them.
A resource pool is a grouping of a set of virtual machines 202 into a pool which can
25 be addressed as a combined unit. Externally, a resource pool appears and behaves like an
individual virtual machine 202 in that it can be allocated processes by the application server
204 according to the defined schedule. internally, when a resource pool is instructed %o
execute a process, it does so by automatically selecting one of the virtual machines 202
which belong to the pool.
A resource pool has a controller which takes the instructions for the whole resource
pool. The controller may be a virtual machine 202 within the resource pool, or may be the
application sewer 204.
in the case that a virtual machine 202 is controller of a resource pool, rather than an
application server 204 being the controller, all virtual machines 202 within the resource pool
are addressable by the application server 204. The virtual machines 202 which are not the
controller forward incoming messages from the application server 204 to the controller and
5 forward responses from the controller to the application server 204. The identity of the virtual
machine 202 acting as the controller is recorded in a database stored on the database
server 206, with a timestamp and is updated by the controller via the application server 204.
Pn the case that this database record goes stale, indicating that the virtual machines 262
acting as the controller has ceased to act as the controller such as when it has experienced
10 an error and failed, another virtual machine 202 may take over as the controller of the
resource pool. The database record eliminates concurrency issues since two virtual
machines 202 cannot update the database record simultaneously, therefore two virtual
machines 202 cannot simultaneously attempt to take over as controller of the resource pool.
On the event that the controller ceases to function, the other virtual machines in the
15 resource pool will be able to detect this quickly, since they will no longer be able to
eommunicate with the controller directly.
The arrangement of virtual machines into resource pools has the advantage of
providing both redundancy in the case of failure and scalability for coping with increased
demand. By allocating sessions within tasks to resource pools, rather than the individual
20 virtual machines 202, if one of the virtual machines 202 were to fail, another could execute
the session in its place without user intervention. Allocation of sessions to resource pools
also enables the system to cope with increased demand, by spreading out the required work
to more of the virtual machine 202 when it is required. It is also possible to add more virtual
machines 202 to a resource pool, increasing the capacity of the resource pool if it is
25 required.
Bn step 608, the tasks defined in step 606 are placed in a schedule. A schedule
contains a tree of tasks which are performed sequentially. Within a schedule, each task
defines the next task or activity to be performed upon either successful completion of the
task or an exception being raised. The time and date on which schedules are run is also
38 defined. For example, a schedule can be defined to run only once, at a given date and time,
or at varied intervals. This can be done on a calendar type basis, for example only running a
particular schedule on working days and within working hours. Schedules may also run
indefinitely from a given start point, or may be retired at a particular time and date,
%n one embodiment of the invention, it is possible to view a timetable which displays
the times at which schedules are defined to run within a given time period using the terminal.
in one embodiment of the invention, it is possible for processes to be executed
outside of the scheduling system; for example, by manual control by a user or by an external
5 system. The processes may be accessible to external systems via an APl. For example,
when an automated process is required on-demand or in response to a particular action, an
BPI call may place the process in the work queue. By making the processes externally
accessible, the system can be used in environments which require the processes to be
executed on something other than a predefined schedule. For example, the self-service
18 check in kiosks discussed above need only to execute the process required to check a
patient in (and any further actions which may follow from a patient checking in) when a
patient checks in.
Upon completion sf a schedule, whether because a defined schedule has run its
course and has ended, because the schedule was retired as defined, or because an error
'i5 occurred, for example, the results of a schedule are saved to reports for later viewing.
The scheduling, the definition of computer interactive objects and the definition of
processes means that tasks are automated at a high level. This results in less training being
required for non-IT specific people to configure the system to automate processes and
allows for a rapid response to changing requirements while avoiding traditional enterprise
20 development cycles.
Figure 7 is a flow chart wwhh depicts the method 780 used to carry out the process
of interpreting text in defined regions. At step 782, the font used by the application is
identified by a user. The user in this instance may be the person configuring the system and
computer interactive objects for use in executing the automated processes, for example.
25 Typically, the fonts used in the user interface of an application are operating system
dependent. At step 704, a two dimensional pixel representation is generated for each
character in the font. Preferably, the two dimensional pixel representation is an array of
Boolean values, with each element in the array representing an individual pixel and the value
representing whether or not the pixel is used by the character. Preferably, every array has
30 the same number of vertical elements. For example, the array representing a full stop
extends as far down as %he lowesf hanging character and as high as the tallest character.
The character arrays are preferably stored in XML format, bu% can be stored in any other
suitable manner.
At step 706, a bitmap of the defined region is converted into the same twodimensional
pixel representation as that used for the font characters. Phis involves cleaning
the bitmap so that any pixels which do not form part of the font are discarded. This is carried
out by assuming that all of the pixels of the bitmap are "paper", i.e. the pixel is determined to
5 be part of the background on which the text is set. As the bitmap is scanned, pixels which
match a specified foreground colour are marked as "ink", i.e. they form part of the text. The
result of this conversion is a "canvas9' which represents the characters displayed in the
defined region of the GUI. As previously described, this representation is preferably a twodimensional
array of Boolean values.
10 Alternatively, the bitmap of the defined region may be filtered to near 16 bits such
that colours are replaced by a 16-bit colour palette except for a specified background colour,
which is left at its 32 bit value. For each row of the filtered image the dominant colour of the
row is found. If the dominant colour is not the background colour, all pixels on the row of the
dominant colour will be replaced by with the background colour. Using this bitmap, the
15 canvas is produced by assuming that all of the pixels are ink and scanning through each
pixel, marking pixels as paper if they match the specified background colour.
At step 908 the canvas is scanned for characters until a character is found, in a first
method of scanning the canvas, the canvas is trimmed such that there are no blank columns
(i.e. columns only containing paper) before or after any columns containing ink and such that
20 the blank rows above and below the rows containing ink match the maximum whitespace
above and below characters specified in the font.
At step 710 the canvas is matched against a font by comparing the mask, which is
the arrangement of ink in the character disregarding any paper, against the mask of the
canvas, of a font eharacter. The canvas is tested from the top left to the bottom right, going
25 vertically down first. It will be appreciated that other suitable methods of scanning the canvas
may also be used. For each point in the canvas, each character in the font is tested to see if
the ink defined in the character mask is represented as ink on canvas. if multiple characters
match, the character with the most ink is chosen. if characters have already been found, any
subsequent matches which start on a different row are disregarded. The spacing between
30 characters is estimated according to the typical spacing between characters defined in the
font.
A& step 712, the process moves past %he identified character. This may be done by
simply continuing to scan from a position beyond the identified character, or the identified
eharacter ink may be deleted from the canvas to prevent the character from being identified
twice or from interfering with the identification of other characters. If the scanning process
has not reached the end of the canvas after moving past the identified carrier, the scanning
process resumes until the next character is found or until the end of the canvas is reached. If
the end of the canvas has been reached, at step 714 the interpreted text is output.
It will be appreciated that this description is by way of example only; alterations and
modifications may be made to the described embodiment without departing from the scope
sf the invention as defined in the claims.
Claims
A system for running automated processes, comprising:
a first computer communicatively coupled to a database; the first computer
being configured to execute instructions effecting the running of an automated
process utilising data stored in the database.
The system of claim '1, wherein the database is stored on the first computer.
The system of claim 1, wherein the database is stored on a second computer.
The system of claim '1, wherein the database is stored on a database server.
The system of any preceding claim, wherein the first computer is configured to host at
least one virtual machine and wherein the at least one virtual machine is configured to
execute the automated process.
The system of any of claims 1 to 5, further comprising an application server.
The system of claim 6, wherein the first computer is configured to host an application
sewer.
The system of claim 6, wherein the application server is hosted on a second computer
acting as a dedicated server.
A system for running automated processes comprising:
at least one database server, at least one application server and at least one
virtual machine, wherein the at %easot ne virtual machine is communicatively coupled
with the at least one database server and the at least one application server and
wherein:
the at least one application server is configured to provide instructions
to the at least one virtual machine to execute an automa%ed process; and
the at least one virtual machine is configured to execute the
aut~matedp rocesses according to the provided instructions utilising data stored
in the database.
18. The system of claim 9, wherein the at least one database server, at least one
application server and a% least one virtual machine form a first set, the system further
comprising:
a second set of at least one database server, at least one application server
and at least one virtual machine, wherein:
the first and second sets are communicatively coupled such that the at
least one application server of each set and the at least one database of each
set may communicate with each other;
at least one application server of one of the sets is configured to
provide instructions to the at least one virtual machine of at least one of the first
and second sets; and
the at least one database server of the second set is a mirror of the at
Beast one database server of the first set.
15 110 The system of any preceding claim, wherein the at least one application server of at
least one set is configured to manage the connection of the at least one virtual
machine of the at least one set to the one or more database servers of the at least
one set.
20 12 The system of claim 11, wherein the at least one application server of the at least one
set contains da%abase server credentials for securely accessing the at least one
database server of the at least one set.
13. The system of claim 9 or claim 10, wherein the at least one set further comprises a
25 communication server communicatively coupled with the at least one virtual machine
of the at least one set and the at least one database server of the at least one set and
the communication sewer is configured to manage the connection of the at least one
virtual machine of the at least one set to the at least one database server of the at
Seast one set.
14. The system of any preceding claim, wherein the at least one database server holds
multiple databases.
15. The system of any preceding claim wherein the at least one virtual machine
35 comprises a standard end-user desktop operating system.
16. The system of any preceding claim, wherein the at least one virtual machine
comprises more than one virtual machine, and the virtual machines are grouped into
at leas%o ne resource pool.
5 17. The system of claim 16, wherein the at least one resource pool comprises a controller
and the controller is a virtual machine within the at least one resource pool.
18. The system of claim 17, wherein the controller of the at least one resource pool is
configured to update a database record with a timestamp which contains the identity
of the virtual machine acting as the controller of the at least one resource pool.
19. The system of claim 18, wherein all virtual machines within the at least one resource
pool are configured to receive instructions from the at least one application server and
are configured to forward the instructions from the at least one application server to
the virtual machine acting as the controller of the at least one resource pool.
28. The system of claim 19, wherein each of the virtual machines of the at least one
resource pool is configured to take over as controller of the at least one resource pool
by updating the database record containing the identity of the virtual machine acting
as the controller of the at least one resource pool if the current controller of the at
least one resource pool ceases to function.
21. The system of claim 17, wherein the controller of the at least one resource pool is the
application server.
22. The system of any preceding claim, wherein the at least one virtual machine is further
configured to carry out the automated processes by interacting with one or more of:
an accessibility interface, an exposed APB and the presentation technology of an
operating system.
23. The system of any preceding claim, wherein the at least one virtual machines is
further configured to carry out the automated processes by interpreting HTML
elements within a HTML document.
35 24. The system of any preceding claim, wherein the at least one v~rtual machine is
configured to carry out the at least one automated process by identifying the font used
by the text in a defined region of the user interface and identifying the characters of
the text in the defined region of the user interface using the identified font.
25. The system of any preceding claim, further comprising a terminal configured to
observe the automated processes carried out by the one or more virtual machines.
26. The system of claim 10, wherein the first and second sets are connected by a wide
area network connection.
10 27. The system of claim 26, wherein the first and second sets are located at different
physical sites.
28. The system of claim 40, wherein the first and second sets are connected by a local
area network.
15
29. The system of any of claims 10 or 26 to 28, wherein the second set is inactive until
activated upon failure of the first set.
30. The system of any of claims 10 or 26 to 29, wherein the at least one application server
28 of the first and second sets are configured to manage the connections of the at least
one virtual machine of each set to the at least one database server of both sets.
34. The system of any of claims 10 or 26 to 30, wherein the at least one application server
of each set contains database server credentials for securely accessing the at least
one database server of both sets.
32. The system of any preceding claim, wherein %he automated processes are defined by
a user and configured to be carried out on data from one or more of software systems,
databases or stored files or documents.
33. The system of claim '17, wherein the controller of the at least one resource pool of the
first and second sets is a master application server.
34. The system of claim 15, wherein %he configuration of and the number of virtual
35 machines in the at least one resource pool of the first set is the same as the
configuration of and the number of virtual machines in the at least one resource pool
of the second set.
The system of any preceding claim, wherein the at least one virtual machine is
configured such that remote access is limited to providing instructions to execute
automated processes, shutdown the at least one virtual machine, restart the at least
one virtual machine and start up the at least one virtual machine.
The system of any preceding claim, wherein at least one password required to access
specific software applications is stored within an encrypted credential store on the at
least database server.
The system sf claim 36, wherein the at least one virtual machine is configured to
update the at least one password stored within the encrypted credential store to a
random password not know outside the system.
A system for automating processes as hereinbefore described with reference to and
as shown in the accompanying drawings.
A method of running automating processes, comprising the steps:
providing a first computer communicatively coupled to a database;
configuring the first computer to execute an automated process;
executing the automated process using data stored in the database.
The method of claim 39, wherein the database is stored on the first computer.
The method of claim 39, wherein the database is stored on a second computer.
The method of claim 39, wherein the database is stored on a database server.
The method of any of claims 39 %o 42, wherein configuring the first computer
comprises hosting at least one virtual machine on the first computer and configuring
the at least one virtual machine to execute the automated process.
The method of any of claims 39 to 43, further comprising the step of providing an
application sewer.
The method or method of claim 44, wherein %he step of configuring the first computer
comprises configuring the first computer to host an application server.
The method or method of claim 44, further comprising the steps of providing a
dedicated server and hosting the application server on the dedicated server.
A method of running automated processes comprising:
providing at least one database server, at least one application server and at
least one virtual machine, wherein the at least one virtual machine is communicatively
coupled with the at least one database server and the at least one application server;
providing, with the application server, instructions to the at least one virtual
machine to execute an automated process; and
executing the automated process on the at least one virtual machine according
to %he provided instructions utilising data stored in the database.
The method of claim 47, wherein the at least one database server, at least one
application server and at least one virtual machine form a first set and further
comprising the steps of:
providing a second set of at least one database server, at least one application
server and at leas% one virtual machine, wherein the first and second sets are
communicatively coupled such that the at least one application server of each set and
the at leas%o ne database of each set may communicate with each other;
configuring at least one application server of one of the sets to provide
'Instructions to the at least one virtual machine of a% least one of the first and second
sets; and
mirroring the at least one database server of the first set on the at least one
database server of the second set.
The method of claim 47 or claim 48, wherein the at least one application server of at
least one set manages the connection of the at least one virtual machine of the at
Beast one set to the one or more database servers of the at least one set.
The method of claim 49, wherein the at least one application server of the at least one
set contains database server credentials for securely accessing the at least one
database server sf the at least one set.
The method of claim 47 or claim 48, wherein the at least one set further comprises a
communication sewer communicatively coupled with the at least one virtual machine
of the at least one set and the at Seast one database server of the at least one set and
the communication server manages the connection of the at least one virtual machine
of the at least one set to the at least one database server of the at least one set.
The method of any of claims 47 to 51, wherein the at least one database server holds
multiple databases.
The method of any of claims 47 to 52 wherein the at least one virtual machine
comprises a standard end-user desktop operating system.
The method of any of claims 47 to53, wherein the at least one virtual machine
comprises more than one virtual machine, and the virtual machines are grouped into
at least one resource pool.
The method of claim 54, wherein the at least one resource pool comprises a controller
and the controller is a virtual machine within the at least one resource pool.
The method of claim 55, wherein the controller of the at least one resource pool
updates a database record with a timestamp which contains the identity of the virtual
machine acting as the controller of the at least one resource pool.
The method of claim 56, wherein a19 virtual machines within the at least one resource
pool receive instructions from the at least one application server and forward the
instructions from the at least one application server to the virtual machine acting as
the controller of the at least one resource pool.
The method of claim 7, wherein each of the virtual machines of the at least one
resource pool is able to take over as controller of the at least one resource pool by
updating the database record containing the identity of the virtual machine acting as
the controller of the at least one resource pool if the current controller of the at least
one resource pod ceases to function.
35 59. The method of claim 55 wherein the controller of the at least one resource pool is the
application server.
663. "he method of any of claims 47 to 59, wherein the at least one virtual machine carries
out at least one automated process by interacting with one or more of: an accessibility
interface, an exposed BPI and the presentation technology of an operating system.
5
611. The method of any of claims 47 to 60, wherein the at least one virtual machine carries
out at least one automated process by interpreting HTML elements within a HTML
document.
40 62. The method of any of claims 47 to 64, wherein the at least one virtual machine carries
out at least one automated process by identifying the font used by the text in a defined
region of the user interface and identifying the characters of the text in the defined
region of the user interface using the identified font.
115 563. The method of any of claims 47 to 62, further comprising a terminal configured to
observe the automated processes carried out by the one or more virtual machines.
64. The method of claim 48, wherein the first and second sets are connected by a wide
area network connection.
20
65. The method of claim 64, wherein the first and second sets are located at different
physical sites.
66. The method of claim 48, wherein the firs% and second sets are connected by a local
25 area network.
67. The method of any of claims 48 or 64 to 66, wherein the second set is inactive until
activated upon failure of the first set.
30 68. The method of any of claims 48 or 64 to 67, wherein the at least one application
server of the first and second sets manages the connections of the at least one virtual
machine of each set to the a%le ast one database server of both sets.
69. The method of any of claims 48 or 64 to 68, wherein the a% least one application
35 sewer of each set contains database sewer credentials for securely accessing the at
least one database server of both sets.
70. The method of any of claims 47 to 69, wherein the automated processes are defined
by a user and are carried out on data from one or more of software systems,
databases or stored files or documents.
5
74. The method of claim 55, wherein %he controller of the at least one resource pool of the
first and second sets is a master application sewer.
72. The method of any of claims 54 to 71 , wherein the configuration of and the number of
virtual machines in the at least one resource pool of the first set is the same as the
configuration of and the number of virtual machines in the at least one resource pool
of the second set.
43. The method of any of claims 47 to 72, wherein remote access to the at least one
virtual machine is limited to providing instructions to execute automated processes,
shutdown the at least one virtual machine, restart the at least one virtual machine and
start up the at least one virtual machine.
74. The method of any of claims 47 to 73, wherein at least one password required to
access specific software applications is stored within an encrypted credential store on
the at least one database server.
75. The method of claim 74, wherein the at least one virtual machine updates the at least
one password stored within the encrypted credential store to a random password not
known outside the method.
76. A method for running automated processes as hereinbefore described with reference
to and as shown in the accompanying drawings.
| # | Name | Date |
|---|---|---|
| 1 | Form 5 [04-02-2016(online)].pdf | 2016-02-04 |
| 2 | Form 3 [04-02-2016(online)].pdf | 2016-02-04 |
| 3 | Form 20 [04-02-2016(online)].pdf | 2016-02-04 |
| 4 | Form 1 [04-02-2016(online)].pdf | 2016-02-04 |
| 5 | Drawing [04-02-2016(online)].pdf | 2016-02-04 |
| 6 | Description(Complete) [04-02-2016(online)].pdf | 2016-02-04 |
| 7 | Marked Copy [17-02-2016(online)].pdf | 2016-02-17 |
| 8 | Form 13 [17-02-2016(online)].pdf | 2016-02-17 |
| 9 | Description(Complete) [17-02-2016(online)].pdf | 2016-02-17 |
| 10 | 201617003980-GPA-(21-04-2016).pdf | 2016-04-21 |
| 11 | 201617003980-Form-1-(21-04-2016).pdf | 2016-04-21 |
| 12 | 201617003980-Correspondence Others-(21-04-2016).pdf | 2016-04-21 |
| 13 | 201617003980.pdf | 2016-06-06 |
| 14 | Form 3 [15-11-2016(online)].pdf | 2016-11-15 |
| 15 | Form 18 [30-06-2017(online)].pdf | 2017-06-30 |
| 16 | 201617003980-FORM 3 [08-11-2017(online)].pdf | 2017-11-08 |
| 17 | 201617003980-FORM3 [01-05-2018(online)].pdf | 2018-05-01 |
| 18 | 201617003980-FORM 3 [13-11-2018(online)].pdf | 2018-11-13 |
| 19 | 201617003980-RELEVANT DOCUMENTS [01-04-2019(online)].pdf | 2019-04-01 |
| 20 | 201617003980-FORM 13 [01-04-2019(online)].pdf | 2019-04-01 |
| 21 | 201617003980-FORM 3 [28-05-2019(online)].pdf | 2019-05-28 |
| 22 | 201617003980-FORM 3 [13-12-2019(online)].pdf | 2019-12-13 |
| 23 | 201617003980-FORM 3 [23-04-2020(online)].pdf | 2020-04-23 |
| 24 | 201617003980-OTHERS [04-01-2021(online)].pdf | 2021-01-04 |
| 25 | 201617003980-FORM 3 [04-01-2021(online)].pdf | 2021-01-04 |
| 26 | 201617003980-FER_SER_REPLY [04-01-2021(online)].pdf | 2021-01-04 |
| 27 | 201617003980-CLAIMS [04-01-2021(online)].pdf | 2021-01-04 |
| 28 | 201617003980-FORM 3 [16-04-2021(online)].pdf | 2021-04-16 |
| 29 | 201617003980-FORM 3 [12-10-2021(online)].pdf | 2021-10-12 |
| 30 | 201617003980-FER.pdf | 2021-10-17 |
| 31 | 201617003980-FORM 3 [12-10-2022(online)].pdf | 2022-10-12 |
| 32 | 201617003980-FORM 3 [26-04-2023(online)].pdf | 2023-04-26 |
| 33 | 201617003980-FORM 3 [09-10-2023(online)].pdf | 2023-10-09 |
| 34 | 201617003980-US(14)-HearingNotice-(HearingDate-13-12-2023).pdf | 2023-11-29 |
| 35 | 201617003980-Correspondence to notify the Controller [11-12-2023(online)].pdf | 2023-12-11 |
| 36 | 201617003980-FORM-26 [12-12-2023(online)].pdf | 2023-12-12 |
| 37 | 201617003980-PETITION UNDER RULE 137 [26-12-2023(online)].pdf | 2023-12-26 |
| 38 | 201617003980-Written submissions and relevant documents [27-12-2023(online)].pdf | 2023-12-27 |
| 39 | 201617003980-PatentCertificate02-01-2024.pdf | 2024-01-02 |
| 40 | 201617003980-IntimationOfGrant02-01-2024.pdf | 2024-01-02 |
| 1 | SearchStrategyE_03-07-2020.pdf |