US Pat. No. 9,396,131

DYNAMIC THREE-TIER DATA STORAGE UTILIZATION

Workday, Inc., Pleasanto...

1. A method for dynamically utilizing data storage, comprising:
determining whether a first data storage criterion capacity threshold is reached for a first data storage, wherein the first
data storage stores uncompressed data objects;

in the event that the first data storage capacity threshold is reached:
determining a new first archiving threshold based on a first target data storage capacity, wherein the new first archiving
threshold comprises a first data object activity level that will result in a sufficient number of data objects in the first
data storage being archived and removed to meet the first target data storage capacity; and

setting the first archiving threshold;
determining whether a second data storage capacity threshold is reached for a second data storage, wherein the second data
storage stores compressed data objects, wherein the data object stored in the second data storage comprises an indicator indicating
whether a respective data object is to be uncompressed and transmitted to the first data storage or remain compressed and
transmitted to a third data storage, wherein the third data storage stores compressed data objects; and

in the event that the second data storage criterion is satisfied:
determining a new second archiving threshold based on a second target data storage capacity, wherein the new second archiving
threshold comprises a second data object activity level that will result in a sufficient number of data objects in the first
second data storage being archived and removed to meet the second target data storage capacity; and

setting the second archiving threshold;
in the event that a data object is needed, determining whether to retrieve the data object from the first uncompressed data
storage, the second compressed data storage, or the third data storage; and

in the event that the data object is no longer needed, determining whether the data object is to be stored in the first data
storage, recompressed and stored in the second data storage, or recompressed and stored in the third data storage, wherein
determining whether the data object is to be stored comprises:

in the event that an activity level of the data object is greater than a keep threshold, store the data object in the first
data storage,

in the event that the activity level of the data object is less than or equal to the keep threshold and is greater than or
equal to an offloading threshold, recompress and store the data object in the second data storage, and

in the event that that the activity level of the data object is less than the offloading threshold, recompress and store the
data object in the third data storage.

US Pat. No. 9,495,200

SYSTEM FOR PARTITIONING BATCH PROCESSES

Workday, Inc., Pleasanto...

1. A system for processing a batch job, comprising:
a processor configured to:
receive a job name for a job submitted to execute;
receive one or more job parameters;
determine one or more nodes to run the job;
determine at least two steps;
determine a static step of the at least two steps, wherein the static step is not parallelizable by a partitioning of inputs,
wherein each partition of the inputs is processed in parallel;

execute the static step, wherein an output of the static step is a set of objects;
determine a subset of the set of objects; and
execute a subsequent step of the at least two steps on the subset of the set of objects on a node of the one or more nodes,
wherein in the event two or more nodes are determined to run the job and the set of objects comprises two or more subsets,
the subsequent step is executed on the two or more subsets in parallel,

wherein a step of the at least two steps is executed using a state of data associated with a start state of the step;
upon completion of executing the step, store a result to a durable storage, wherein the durable storage stores a state of
data associated with a completion state of the step, and wherein the state of data associated with the start state of the
step and the completion state of the step are accessible by other execution processes as associated with either the start
state of the step or the completion state of the step;

a memory coupled with the processor, wherein the memory is configured to provide the processor with instructions.

US Pat. No. 9,367,481

DYNAMIC THREE-TIER DATA STORAGE UTILIZATION

Workday, Inc., Pleasanto...

1. A method for dynamically utilizing data storage, comprising:
determining whether a first data storage criterion capacity threshold is reached for a first data storage, wherein the first
data storage stores uncompressed data objects;

in the event that the first data storage capacity threshold is reached:
determining a new first archiving threshold based on a first target data storage capacity, wherein the new first archiving
threshold comprises a first data object activity level that will result in a sufficient number of data objects in the first
data storage being archived and removed to meet the first target data storage capacity; and

setting the first archiving threshold;
determining whether a second data storage capacity threshold is reached for a second data storage, wherein the second data
storage stores compressed data objects, wherein the data object stored in the second data storage comprises an indicator indicating
whether a respective data object is to be uncompressed and transmitted to the first data storage or remain compressed and
transmitted to a third data storage, wherein the third data storage stores compressed data objects; and

in the event that the second data storage criterion is satisfied:
determining a new second archiving threshold based on a second target data storage capacity, wherein the new second archiving
threshold comprises a second data object activity level that will result in a sufficient number of data objects in the first
second data storage being archived and removed to meet the second target data storage capacity; and

setting the second archiving threshold;
in the event that a data object is needed, determining whether to retrieve the data object from the first uncompressed data
storage, the second compressed data storage, or the third data storage; and

in the event that the data object is no longer needed, determining whether the data object is to be stored in the first data
storage, recompressed and stored in the second data storage, or recompressed and stored in the third data storage, wherein
determining whether the data object is to be stored comprises:

in the event that an activity level of the data object is greater than a keep threshold, store the data object in the first
data storage,

in the event that the activity level of the data object is less than or equal to the keep threshold and is greater than or
equal to an offloading threshold, recompress and store the data object in the second data storage, and

in the event that that the activity level of the data object is less than the offloading threshold, recompress and store the
data object in the third data storage.

US Pat. No. 9,501,466

ADDRESS PARSING SYSTEM

Workday, Inc., Pleasanto...

1. A system for identifying address components, comprising:
a training address interface to receive training addresses, wherein the training addresses are comprised of a set of components
with corresponding identifiers;

a training address probability processor to determine component probabilities of each component of the set of components of
the training addresses being associated with each identifier;

a parsing address interface to receive an address for parsing; and
a processor to:
determine a matching model of a set of models based at least in part on a matching probability for each model of the set of
models for a tokenized address, wherein the tokenized address comprises an ordered set of components, wherein the tokenized
address is based at least in part on the address for parsing, wherein determining a matching model comprises:

determining a first probability, the first probability being a probability that a first component of the tokenized address
is associated with a first identifier of a model of the set of models, wherein the model comprises an ordered set of identifiers;

determining a second probability, the second probability being a probability that a second component of the tokenized address
is associated with a second identifier of the model; and

determining the matching probability of the model based at least in part on the first probability and the second probability;
associate each component of the set of components of the tokenized address with an identifier based at least in part on the
matching model; and

store the set of components of the tokenized address and the associated identifiers.

US Pat. No. 9,411,850

PROCESS FOR EMBEDDED INTELLIGENCE

Workday, Inc., Pleasanto...

1. A system comprising:
an interface for:
receiving indication to activate a business process from a user, wherein the business process is associated with an embedded
intelligence applet, wherein the business process comprises hiring an employee, modifying a salary of an employee, giving
an employee a promotion, or transferring an employee between divisions of a business;

receiving an input object for the business process associated with an embedded intelligence applet, the interface displaying
a set of prompts for inputting input objects for the business process, wherein the input object is received from a field in
the interface as the user entering business process data advances to a next field in the interface, wherein receiving the
input object as the user advances to the next field automatically activates the embedded intelligence applet and makes visible
an embedded intelligence applet window on the interface, wherein the embedded intelligence applet is designed to provide a
user with related information in order to assist with decisions made during the business process, and wherein the input object
includes at least one of the following: an employee name, a new employee salary, a new employee title, and a new employee
business division; and

a processor to:
search a database for a set of objects, wherein the set of objects comprises employee data, wherein the search on the database
for employee data is based at least in part on at least one of the following: a classification of the input object, one or
more attributes associated with the input object, and criteria determined based at least in part on the input object; and

analyze the set of objects comprising employee data for the related information in order to assist with decisions made during
the business process;

determine display information for the embedded intelligence applet based at least in part on the analysis of the employee
data;

providing the display information to the embedded intelligence applet window.

US Pat. No. 9,342,592

METHOD FOR SYSTEMATIC MASS NORMALIZATION OF TITLES

Workday, Inc., Pleasanto...

1. A method for generating a database of labeled canonical titles, the method comprising:
designating a set of canonical titles;
generating a set of canonical n-grams for each canonical title, wherein each canonical n-gram includes one or more contiguous
words in the canonical title;

assigning a set of canonical attributes to each canonical n-gram in the set of canonical n-grams;
assigning a set of canonical labels to one or more of the canonical attributes for each canonical n-gram;
storing at least one of each canonical title, the set of canonical n-grams generated for each canonical title, the set of
canonical attributes assigned to each of the canonical n-grams, or the set of canonical labels assigned to each of the canonical
attributes in the database of labeled canonical titles;

receiving a set of raw titles;
generating a set of raw n-grams for each raw title, wherein each raw n-gram includes one or more contiguous words in the raw
title;

assigning a set of raw labels to one or more attributes in a set of attributes assigned to each raw n-gram, wherein the set
of attributes assigned to the raw n-grams and the set of canonical attributes assigned to the canonical n-grams are the same
set;

grouping the raw titles with identical raw labels into representative groups;
selecting a raw title from each representative group to be a representative title;
mapping each representative title to one of the canonical titles based on a comparison of the raw labels associated with each
representative title to the canonical labels associated with each canonical title; and

verifying that the representative titles are correctly mapped to the canonical titles, and that the raw titles are correctly
represented by the representative titles.

US Pat. No. 9,177,010

NON-DESTRUCTIVE DATA STORAGE

Workday, Inc., Pleasanto...

1. A system for non-destructive data storage including:
a storage device;
an interface for receiving a request to execute a transaction that causes a change to information associated with a business
object stored on the storage device, wherein the transaction comprises a list of changes to the business object, wherein the
list of changes further comprises an effective time, wherein the list of changes further comprises one or more changes to
an attribute or a relationship of the business object;

a processor configured to:
establish a transaction time of the request;
update the business object according to the list of changes;
update a chain of effective change objects associated with the business object with the transaction, wherein updating the
chain of effective change objects comprises adding a new effective change object to the chain of effective change objects
and associating the new effective change object to the effective time and the transaction time; and

determine the effective state of the business object at an inquiry time, wherein determining the effective state of the business
object comprises scanning through at least a portion of the chain of effective change objects; and

a memory coupled to the processor, wherein the memory is configured to provide the processor with instructions.

US Pat. No. 9,335,901

GRID-BASED USER INTERFACE SYSTEM

Workday, Inc., Pleasanto...

1. A system for displaying data, comprising:
an interface configured to receive an indication of a matrix element for expansion; and
a processor configured to:
provide a matrix for display, wherein the matrix includes a plurality of matrix elements, wherein the matrix includes a plurality
of objects with attributes, wherein a set of objects from the plurality of objects is associated with each matrix element,
wherein the set of objects associated with a matrix element comprises objects with attributes that correspond to X and Y axis
values of the matrix element; and

provide a modified matrix for display, in the event that the matrix element is selected for expansion, wherein the modified
matrix for display includes a matrix element expanded and matrix elements compressed based at least in part on the matrix
element selected;

receive an indication to associate an object of the plurality of objects with a matrix element, wherein associating the object
of the plurality of objects with the matrix element comprises updating attributes associated with the object with the corresponding
X and Y axis values of the matrix element.

US Pat. No. 9,501,426

DYNAMIC TWO-TIER DATA STORAGE UTILIZATION

Workday, Inc., Pleasanto...

1. A system for dynamically utilizing data storage, comprising:
a processor configured to:
retrieve a data object and store the data object in a local data storage, wherein the data object comprises an indicator,
the indicator indicating whether, after processing the data object is complete, the data object is to be stored in a first
data storage corresponding to uncompressed data storage, or compressed and stored in a second data storage corresponding to
compressed data storage, wherein the indicator is based on a keep threshold;

process the data object stored in the local data storage;
after processing the data object, store the data object in the first data storage or compress and store the data object in
the second data storage based on the indicator;

determine whether an archiving threshold for the first data storage is satisfied; and
in the event that the archiving threshold for the first data storage is satisfied:
determine a first archiving threshold based on a target data storage usage level, wherein determining the first archiving
threshold comprises one of:

ordering objects stored in the first data storage by activity level and determining an activity threshold to remove a necessary
amount of data for a data storage usage to be below the target data storage usage level; and

determining the necessary amount of data that would be removed for one or more test archiving thresholds, and choosing the
test archiving threshold that removes closest to the necessary amount of data; and

setting a new archiving threshold based at least in part on the first archiving threshold; and
a memory coupled to the processor and configured to provide the processor with instructions.

US Pat. No. 9,336,499

PREVIEW RELATED ACTION LIST

Workday, Inc., Pleasanto...

1. A system for previewing content included in an enterprise database associated with an enterprise system comprising:
a processor executing instructions comprising:
provide a display of objects in the enterprise database;
receive a first indication from a user to display a preview associated with a selected object stored in the enterprise database;
dynamically determine an action list associated with the selected object including by using a first method to retrieve, from
the enterprise system, actions that are executed with respect to the selected object, wherein the first method includes a
run-time determination and retrieval of the action list based at least in part on one or more attributes associated with the
user, wherein one of the one or more attributes associated with the user comprises a user role;

dynamically determine content associated with the selected object using a second method to retrieve content from the enterprise
system, wherein retrieving content comprises selecting a subset of information of the selected object to provide summary information
of the selected object based on the user role and security permissions of the user, wherein the second method to retrieve
content further comprises a method associated with the selected object, wherein the second method further comprises a processing
step of the subset of information of the selected object, wherein the processing step comprises traversing object relationships
from the selected object to find and provide the summary information; and

provide the content and the action list for display side by side in the preview, wherein the preview is an overlay; and
a non-transitory memory coupled with the processor and configured to provide the processor with instructions.

US Pat. No. 9,280,256

SWIRL INTERFACE DISPLAY FOR A HIERARCHICAL ORGANIZATION

Workday, Inc., Pleasanto...

1. A system for displaying a hierarchical organization,
comprising:
a processor configured to:
receive an indication to display a hierarchical organization;
cause a first group with focus at a focus level to display within a first circle, wherein the first circle includes one or
more members of the first group and at least a first group head, and wherein the first group head is a member of a second
group in the hierarchical organization, wherein the first group head is displayed in the middle of the first circle with the
one or more members arranged radially around the first group head inside the first circle, wherein a member of the one or
more members is a head of a below group and is displayed as a stack of overlapping polygons indicating the below group inside
the first circle; and

cause the second group in the hierarchical organization to display within a second circle, wherein the second circle is associated
with a level above the focus level of the hierarchical organization and the level above the focus level is associated with
the first group head of the first group, wherein the second group comprises the first group head as a member and a second
group head in the center of the second circle, wherein the second circle further comprises one or more second group members,

wherein a member of the one or more second group members is a head of a group that is caused to be displayed as a stack of
overlapping polygons inside the second circle;

cause a third group in the hierarchical organization to display within a third circle, wherein the third circle comprises
the second group head as a member and a third group head in the center of the third circle; and

cause the first circle, the second circle, and the third circle to display simultaneously as non-concentric circles arranged
offset from each other at an angle in a swirl; and

a memory coupled to the processor and configured to provide the processor with instructions.

US Pat. No. 9,262,035

DISPLAY FOR EMBEDDED INTELLIGENCE

Workday, Inc., Pleasanto...

1. A system for displaying an embedded intelligence applet, comprising:
a processor configured to:
receive an indication to select a business process with an associated embedded intelligence applet, wherein the business process
comprises modifying employee and business information stored in a database;

provide business process information to display in a main transaction window and a set of prompts for a first input data for
a first field in the database and a second input data for a second field in the database;

receive the first input data into the business process, wherein the first input data corresponds to a current value of the
first field;

determine the business process information to display in the main transaction window, wherein determining the business process
information comprises to:

search the database for employee data related to the business process; and
retrieve a current value for the second field from the database based on the first input data;
determine display information to display in an embedded intelligence applet window based at least in part on the first input
data, wherein the display information for the embedded intelligence applet comprises the employee and business information
stored in the database that assists a business manager with decisions made during the business process, wherein the display
information further comprises one or more of graphs, tables, or charts based on the employee and business information stored
in the database;

provide the display information to display in the embedded intelligence applet window, wherein the embedded intelligence applet
is in a pre-defined area of the main transaction window and overlaps the business process information;

provide an indication to display the embedded intelligence applet window in an opaque mode;
receive the second input data into the business process, wherein the second input data updates the current value of the second
field to an updated value;

provide an updated display information to display in the embedded intelligence applet window including by automatically making
real time updates to the display information based at least in part on the updated value of the second field;

determine whether an indication to activate a window other than the embedded intelligence applet window was received, wherein
the embedded intelligence applet window is displayed in a partially transparent mode in response to a determination that an
indication to activate another window was received; and

in the event that the embedded intelligence applet window is displayed in a partially transparent mode, provide an indication
to display an alert that the embedded intelligence applet window has been updated; and

receive an indication to reactivate the embedded intelligence applet window;
provide a reactivation indication to make the embedded intelligence applet window redisplay in the opaque mode; and
a memory coupled to the processor and configured to provide the processor with instructions.

US Pat. No. 9,223,462

CONFIGURATION OF EMBEDDED INTELLIGENCE

Workday, Inc., Pleasanto...

1. A system comprising:
a memory;
a processor coupled to the memory and executes instructions to:
receive an indication to add an embedded intelligence applet to a business process of a category tree of business processes
that is defined to comprise a first exposed output field, wherein the embedded intelligence applet provides information that
is relevant to a decision associated with the business process including by conducting a search for related information based
at least in part on at least a portion of data associated with the first exposed output field;

in response to a determination that the business process is enabled for addition of the embedded intelligence applet:
associate a prompt of the embedded intelligence applet with the first exposed output field of the business process including
by assigning the first exposed output field of the business process to an input of the embedded intelligence applet and causing
the embedded intelligence applet prompt to be connected to receive data from the first exposed output field upon execution
of the business process;

receive an indication of an embedded intelligence applet exception, wherein the embedded intelligence applet exception comprises
a condition that must be satisfied in order for the embedded intelligence applet to be run, wherein the condition comprises
one of the following:

a variable of the business process is equal to a specific value, or a variable of the business process is in a predetermined
range;

store the embedded intelligence applet as a part of the business process definition;
execute a business process; and
automatically trigger the embedded intelligence applet to be shown embedded in the business process in the event that the
prompt of the embedded intelligence applet has been satisfied and the embedded intelligence applet exception is met, wherein
the embedded intelligence applet is shown embedded with the business process such that no switching to another application
is necessary for the embedded intelligence applet to be visible.

US Pat. No. 9,747,005

ADAPTIVE USER INTERFACE

Workday, Inc., Pleasanto...

1. A system for determining display information, comprising:
a client device with a display;
an interface configured to receive widget information, wherein the widget information comprises content and hints, wherein
the hints are indicated in the widget information by one of the following: a markup tag, a hint declaration, or a hint keyword,
wherein the hints comprise a hint for rendering the widget, a hint for widget information not to display, a hint for widget
information to modify, and a hint for widget information to display;

a processor configured to:
determine whether to follow the hints in the widget information, wherein the hints are determined to be followed by using
a heuristic for a widget type, a device type of the client device, and a display size of the client device, and by using conditions
for use included in the hints, wherein the conditions for use comprise conditions in which the hints are followed;

determine display information based at least in part on the widget information and based on the system information of the
client device and based on the determination of whether or not to follow the hints, wherein determining display information
comprises:

determine how the widget is rendered based at least in part on the hint for rendering the widget, wherein the hint for rendering
the widget indicates to display a spreadsheet, a list, or a form due to a display size of the client device;

determine a first subset of widget content to not display based at least in part on the hint for not displaying information,
wherein the hint for not displaying information indicates to not display a portion of the widget information due to the display
size of the client device;

determine a second subset of widget content to modify based at least in part on the hint for modifying information; and
determine a third subset of widget content to display based at least in part on the hint for information to display, wherein
one hint of the hints indicates that a first content of the widget content has a first importance and a second content of
the widget content has a second importance, the first importance being different from the second importance;

determine whether the display size is below a certain threshold; and
provide display information, comprising to:
in the event that the display is below the certain threshold:
include to display, in the display information, one content of the first and second contents having a higher importance than
the other content based on the hints;

include to not display, in the display information, the other content having a lower importance based on the hints;
determine whether the client device includes a touchscreen display; and
in the event that the client device includes the touchscreen display, include to display, via a form data display, a piece
of data from the one content having the higher importance and additional data related to the piece of data in the event that
a button associated with the piece of data is activated via the touchscreen display; and

a memory coupled to the processor and configured to provide the processor with instructions.

US Pat. No. 9,613,116

IDENTIFYING AND FORMATTING DATA FOR DATA MIGRATION

Workday, Inc., Pleasanto...

1. A method, comprising:
identifying at least one data object for migration to a remote cloud application server;
identifying a plurality of field groups linked to the at least one data object, each of the plurality of field groups comprising
at least one data field, wherein a field group is linked to content of the at least one data object by a pointer;

receiving, via an application programming interface, the plurality of field groups at the remote cloud application server;
identifying at least one of the received plurality of field groups for migration to the remote cloud application server;
generating a simple data set, wherein the simple data set is loadable into the remote cloud application server to migrate
content of the identified at least one data object;

converting a format of the identified at least one field group to a format associated with the simple data set, the conversion
including translating the linking of (i) the identified field group to the content of the at least one data object to (ii)
formatting of the simple data set such that the simple data set includes a subset of data of the at least one data object,
the data not included in the subset of data being derivable from the subset of data;

modifying the simple data set to include the at least one data field; and
migrating the modified simple data set to the remote cloud application server.

US Pat. No. 9,787,696

BRUTE FORCE ATTACK PREVENTION SYSTEM

Workday, Inc., Pleasanto...

1. A system for preventing a brute force attack, comprising:
an output interface to:
provide a first workfactor, a first challenge token, and a login page to a client;
an input interface to:
receive a first response token, a username, and a password;
a processor to:
determine whether the first response token satisfies a first condition based at least in part on the first workfactor;
in the event that the first response token does not satisfy the first condition:
disregard the username and the password; and
in the event that the first response token satisfies the first condition:
determine whether the username and the password are valid;
in the event that the username and the password are valid, grant the client access to a server; and
in the event that the username and the password are not valid, change the first workfactor.

US Pat. No. 9,600,136

DATA OBJECT EXTENSIBILITY

Workday, Inc., Pleasanto...

1. A system for creating a custom field type, comprising:
an input interface configured to:
receive an indication to create a custom object in an object-oriented database, wherein the object-oriented database comprises
a database storing objects in an object tree with relations between each object, wherein the indication to create the custom
object comprises a user selection of an existing object to extend;

receive an indication to create a new custom field for the custom object;
receive an indication whether multiple instances of the new custom object are allowed in the object-oriented database, wherein
multiple instances of the new custom object allows multiple copies of the new custom field for the custom object, the multiple
instances of the new custom object including a first instance of the new custom object and a second instance of the new custom
object;

receive a display value field for specifying a data value that is used to distinguish multiple instances of the custom object,
wherein a first data value is used to distinguish the first instance of the new custom object, and wherein a second data value
is used to distinguish the second instance of the new custom object, the first display value being different from the second
display value;

a processor configured to:
provide one or more field types for the custom object;
receive an indication of a selection of the one or more field types;
provide a form of parameters based at least in part on the selection of the one or more field types, wherein the form prompts
for parameters specific for the selection of the one or more field types;

validate the parameters of the selection of the one or more field types to create a new custom field, wherein the parameters
are checked for being in bounds of a predetermined range, wherein the validating of the parameters of the selection of the
one or more field types comprises to:

determine whether a parameter is a text parameter; and
in the event that the parameter is the text parameter:
determine whether the parameter is equal or less than a maximum length; and
in the event that the parameter is equal or less than the maximum length:
 determine whether the parameter is a web service alias field;
 in the event that the parameter is the web service alias field:
 determine whether the parameter includes a space; and
 in the event that the parameter includes the space,
 determine that the parameter is invalid; and
 in the event that the parameter is not the web service alias field, determine that the parameter is valid;
in the event that the parameters of the selection of the one or more field types do not pass validation, reject the new custom
field, wherein rejecting the new custom field comprises providing a validation error with a message of an invalid parameter
of the selection; and

in the event that the parameters of the selection pass validation, add the new custom field to the existing object to create
the custom object;

receive a request to create a new instance of the custom field for a specific custom object;
determine whether the new instance is allowed based at least in part on the indication of whether multiple instances of the
new custom field are allowed;

in the event that the new instance is allowed, allow the new instance; and
in the event that the new instance is not allowed, do not allow the new instance.

US Pat. No. 9,595,077

HIGH PERFORMANCE DATA RENDERING

Workday, Inc., Pleasanto...

1. A system for causing a display of items in a display range, comprising:
an input interface to receive a total number of items;
a processor configured to:
determine a total data set height by multiplying the total number of items by an approximate item height;
determine a total number of chunks by dividing the total number of items by a number of items per chunk;
determine a starting position and a height for each chunk using the total data set height and the total number of chunks;
determine a display range for displaying items using the total data set height, a display height, and a scroll position;
determine a set of chunks needed to display the display range using the starting position for each chunk; and
cause the displaying items associated with the display range to be displayed.

US Pat. No. 10,152,610

SENSITIVE DATA SERVICE ACCESS

Workday, Inc., Pleasanto...

1. A system for accessing data, comprising:an interface to receive a request to access data and requestor information; and
a processor to:
retrieve a location context of the data, wherein the location context of the data comprises one or more of an access policy location to which the access policy applies, and an entry location the data was entered;
determine whether the data comprises sensitive data configured to have an assigned access policy and an assigned storage policy, comprising determining whether the assigned access policy has a first location context that matches the location context of the data, and determining whether the assigned storage policy has a second location context that matches the location context of the data, wherein the assigned access policy comprises information on one or more security groups allowing or denying data access;
in response to a sensitive data determination that the data comprises sensitive data configured to have the assigned access policy and the assigned storage policy:
determine whether access is allowed by the assigned access policy based at least in part on the requestor information; and
in response to an access determination that access is allowed:
retrieve the data based on information provided by a token; and
provide the data.

US Pat. No. 9,882,914

SECURITY GROUP AUTHENTICATION

Workday, Inc., Pleasanto...

1. A system for security group authentication comprising:
an interface for receiving a request from a user to perform an action;
a hardware processor configured for:
determining that a current authentication level for the user is not adequate to perform the action based at least in part
on a current authentication type associated with the user, comprising:

determining whether the action is permitted under a first set of access restrictions associated with the current authentication
type associated with a security group associated with the user, wherein the first set of access restrictions is associated
with a first security group, wherein a second set of access restrictions is associated with a second security group, wherein
each factor associated with the first security group is the same or is more restrictive than each corresponding factor of
the second security group, wherein a factor associated with the first security group is more restrictive than a corresponding
factor of the second security group, and wherein the security group is determined based on the following factors:

whether the user is an administrative user or a basic user, the basic user being more restrictive than the administrative
user;

a network associated with a login of the user from a login request, the network being a corporate network or a home network,
the home network being more restrictive than the corporate network; and

an allowed authentication type, the allowed authentication types including at least two of the following in order of most
restrictive to least restrictive: username and password, single sign-on authentication, certificate authentication, or required
two-factor authentication;

and in response to a determination that the action is not permitted under the first set of access restrictions, determining
that the current authentication level for the user is not adequate to perform the action, comprising:

determining that the action is not permitted in response to a determination that the network is the home network and the user
is logged in with the current authentication type;

determining that a new authentication level for the user is adequate to perform the action, wherein the new authentication
level for the user is associated with a different authentication type, wherein allowed authentication types associated with
the security group include the current authentication type and a new authentication type, and wherein the determining that
the new authentication level for the user is adequate to perform the action comprises:

determining whether the action is permitted under the second set of access restrictions associated with the different authentication
type associated with the security group associated with the user; and

in response to a determination that the action is permitted under the second set of access restrictions, determining that
the new authentication level for the user is adequate to perform the action, comprising:

performing one or more of the following:
 logging onto the corporate network using the current authentication type to obtain the new authentication level to perform
the action using the corporate network; or

 upgrading, via the home network, the current authentication type to a more restrictive authentication type by performing
the new authentication type to obtain the new authentication level to perform the action using the home network;

providing a request to authenticate the new authentication level to the user, wherein the current authentication level and
the new authentication level are associated with the security group; and

in response to a determination that authentication information is valid for the different authentication type, permitting
the user to perform the action.

US Pat. No. 9,798,593

SYNCHRONIZATION OF CODE EXECUTION

Workday, Inc., Pleasanto...

1. A system for determining a toggle value, comprising:
an input interface to:
receive a request for the toggle value associated with a toggle; and
a processor to:
determine an indicated toggle value associated with the toggle;
determine the toggle value associated with the toggle based at least in part on the indicated toggle value and a set of dependencies;
and

provide the toggle value associated with the toggle.

US Pat. No. 9,710,774

CONFIGURATION OF EMBEDDED INTELLIGENCE

Workday, Inc., Pleasanto...

1. A system comprising:
a processor configured to:
create an embedded intelligence applet including:
create a blank report;
determine whether the blank report is usable as the embedded intelligence applet based on at least one of: a number of columns
in the blank report being below a column threshold and output of the blank report meets a criteria; and

if the blank report is usable as the embedded intelligence applet, enable the blank report as the embedded intelligence applet;
associate a prompt of the embedded intelligence applet with an exposed field of a process, wherein the embedded intelligence
applet is configured to generate a report based on the exposed field;

store a definition of the process and an association, wherein the association indicates a relationship between the process
and the embedded intelligence applet; and

in the event an indication to execute the process is received, automatically provide the embedded intelligence applet to generate
the report, wherein the embedded intelligence applet is integrated with the process; and

a memory coupled to the processor and configured to provide the processor with instructions.

US Pat. No. 9,934,304

SYSTEMS AND METHODS FOR MEMORY OPTIMIZATION INTEREST-DRIVEN BUSINESS INTELLIGENCE SYSTEMS

Workday, Inc., Pleasanto...

1. A system comprising:at least two processors; and
a memory storing an application wherein the application directs the at least two processors to:
receive raw data that has a plurality of dimensions;
generate one or more partitions of a dictionary for each dimension of the plurality of dimensions of the raw data, wherein each of the one or more partitions includes an entry for at least one dimension of the plurality of dimensions, wherein the entry at least includes a corresponding dictionary identifier and a corresponding value;
determine a number of entries in each of the one or more partitions;
determine whether the number of entries in a partition of the one or more partitions is greater than a threshold value;
in the event the number of entries for the partition of the one or more partitions is greater than the threshold value, store the partition in a common memory;
in the event the number of entries for the partition of the one or more partitions is not greater than the threshold number:
combine the partition with another partition having the number of entries less than the threshold value into a single partition in which the number of entries is greater than the threshold value; and
store the single partition in the common memory.

US Pat. No. 9,824,127

SYSTEMS AND METHODS FOR INTEREST-DRIVEN DATA VISUALIZATION SYSTEMS UTILIZED IN INTEREST-DRIVEN BUSINESS INTELLIGENCE SYSTEMS

Workday, Inc., Pleasanto...

1. An interest-driven data visualization system, comprising:
a processor;
a memory connected to the processor and storing an interest-driven data visualization application; and
metadata storage storing data description metadata describing raw data and aggregate data available to an interest-driven
business intelligence system, wherein aggregate data is generated from raw data obtained by the interest-driven business intelligence
system using an interest-driven data pipeline, wherein the interest-driven data pipeline is configured to load data of interest
into the memory based on a desired consumption of the data of interest;

wherein the interest-driven data visualization application directs the processor to:
define reporting data requirements, wherein the reporting data requirements comprise at least one piece of reporting data
metadata;

generate data retrieval job data from the at least one piece of reporting data metadata in the reporting data requirements
based on the data description metadata in the metadata storage;

transmit the data retrieval job data to an interest-driven business intelligence system;
receive aggregate data that satisfies the data retrieval job data from the interest-driven business intelligence system, the
aggregate data including aggregate data metadata, wherein the aggregate data metadata includes time estimation data describing
a delay associated with generating supplemental aggregate data using the raw data that is generated based on time taken to
generate at least a portion of the aggregated data;

create at least one piece of reporting data using the aggregate data that satisfies the retrieval job data, the data description
metadata in the metadata storage, and the at least one piece of reporting data metadata from the reporting data requirements;

associate visualization metadata with the at least one piece of reporting data, wherein the visualization metadata describes
a visual appearance of the at least one piece of reporting data, and wherein the visualization metadata is automatically generated
based upon the at least one piece of reporting data and the reporting data requirements using the interest-driven data visualization
system, the visualization metadata comprising a portable visualization; and

generate a report using the at least one piece of reporting data based on the reporting data requirements and the visualization
metadata, wherein the generated report is configured to be displayed using a display device.

US Pat. No. 9,792,563

HUMAN RESOURCES SYSTEM DEVELOPMENT

Workday, Inc., Pleasanto...

1. A method for defining a human resources system, comprising:
receiving at least one new metadata model that defines at least one new object class in the human resource system, wherein
the new metadata model includes one or more attributes, one or more relationships, and one or more methods associated with
the new object class;

receiving process definitions;
storing, in a storage module, the new metadata model including data associated with the new metadata model, and the process
definitions in a minimalistic metamodel for persistence, wherein the minimalistic metamodel for persistence comprises three
tables comprising an instance table, an attribute table, and a reference table for all of the objects in the human resources
system, wherein the new metadata model including data associated with the new metadata model is stored by storing one or more
instances of the new object class in the instance table, the one or more attributes in the attribute table, and the one or
more relationships in the reference table, wherein:

the instance table stores all instances of object classes in the human resource system as defined by a plurality of metadata
models;

the attribute table stores attribute data associated with all the instances of the object classes as defined by the plurality
of metadata models;

the reference table stores relationship data associated with all the instances of the object classes as defined by the plurality
of metadata models;

the instance table, the attribute table, and the reference table store data that has been specified;
metadata model definitions and the process definitions are able to be interpreted using an interpretive engine; and
the interpretive engine is configured to process the metadata model definitions and process definitions without compilation
of any code; and

at a time of execution by the interpretive engine, all the objects specified in the instance table, the attribute table, and
the reference table and processes are loaded into memory for easy modification of instances of objects defined by the plurality
of metadata models and the new metadata model;

for a process of one or more processes defined by the process definitions:
defining an element to which the process responds;
defining one or more process steps in response to the element; and
defining an output response, wherein the process when interpreted by the interpretive engine are sufficient to define a fully
functional human resource system;

receiving an update, wherein the update includes a change to an existing instance of an object class in the human resource
system;

updating the human resource system by adding, removing, or changing a plurality of entries associated with the existing instance
of the object class in at least one of the instance table, the attribute table, and the reference table, comprising:

validating a transaction request relating to the existing instance of the object class, comprising:
ensuring a requestor has privileges to perform a requested transaction;
checking whether the transaction request corresponds to a metadata definition of an element of the transaction request; and
ensuring that data in the requested transaction is of a correct type and in a correct range of values;
determining whether a controlling object to be updated exists, wherein the instances of the object class are organized in
a tree structure the controlling object relating to a trunk of the tree structure;

in the event that the controlling object to be updated does not exist creating the controlling object; and
in the event that the controlling object to be updated exists, locating the controlling object associated with an instance
of the object class;

transferring the plurality of entries associated with the existing instance of the object class in the at least one of the
instance table, the attribute table, and the reference table to the storage module after the updating of the human resource
system is performed, wherein the transferring of the plurality of entries to the storage module is performed after each of
the adding, removing, or changing to the plurality of entries have been completed to avoid inconsistencies in the human resource
system, the storage module including permanent storage; and

executing the updated human resources system by interpreting the stored metadata model definitions and process definitions
using the interpretive engine.

US Pat. No. 9,972,104

SYSTEMS AND METHODS FOR RENDERING VISUALIZATIONS IN AN INTEREST-DRIVEN BUSINESS INTELLIGENCE SYSTEM

Workday, Inc., Pleasanto...

1. An interest-driven business intelligence data visualization system comprising:a processor;
a memory readable by the processor; and
an interest-driven business intelligence data visualization system application stored in the memory that when read by the processor directs the processor to:
render a display at a current rendering level where the current rendering level is a first one of a plurality of rendering levels;
receive current system performance level information that indicates an amount of system resources available;
compare the current system performance level information to a threshold value; and
adjust the current rendering level to a second rendering level based upon a result of comparing the current system performance level information to the threshold value where the second rendering level is a second one of the plurality of rendering levels, wherein the plurality of rendering levels include an animation level, an intermediate level, and a progressive level where the animation level is the most robust of the plurality of rendering levels and immediately renders all frames of the display to provide a fluid smooth display, the intermediate level is a less robust rendering level and renders frames that include a state transition in a frame and drops other intermediate frames, and the progressive level is the least robust level and renders a portion of data in each frame.

US Pat. No. 9,939,995

PREVIEW RELATED ACTION LIST

Workday, Inc., Pleasanto...

1. A system for previewing content included in an enterprise database associated with an enterprise system comprising:a processor executing instructions comprising:
provide a display of objects in the enterprise database;
receive a first indication from a user to display a preview associated with a selected object stored in the enterprise database, wherein the preview is an overlay;
in response to the first indication, dynamically determine an action list associated with the selected object, wherein the action list includes actions determined and retrieved at run-time based at least in part on one or more attributes associated with the user;
in response to the first indication, dynamically determine summary information associated with the selected object including: selecting a subset of information of the selected object based on a user role and security permissions of the user, and processing the selected subset of information by traversing object relationships from the selected object to find and provide the summary information;
provide the summary information and the action list for display side by side in the preview; and
a non-transitory memory coupled with the processor and configured to provide the processor with instructions.

US Pat. No. 9,934,299

SYSTEMS AND METHODS FOR INTEREST-DRIVEN DATA VISUALIZATION SYSTEMS UTILIZING VISUALIZATION IMAGE DATA AND TRELLISED VISUALIZATIONS

Workday, Inc., Pleasanto...

1. An interest-driven data visualization system, comprising:a processor; and
a memory connected to the processor and configured to store an interest-driven data visualization application;
wherein the interest-driven data visualization application configures the processor to:
define reporting data requirements, where the reporting data requirements comprise at least one piece of reporting data metadata;
generate data retrieval job data based on the at least one piece of reporting data metadata in the reporting data requirements and data description metadata;
transmit the data retrieval job data to an interest-driven business intelligence server system;
receive aggregate data from the interest-driven business intelligence server system;
create at least one piece of reporting data using the received aggregate data, the data description metadata, and the reporting data metadata;
generate a report using the at least one piece of reporting data, the reporting data requirements, and visualization metadata;
generate visualization image data based on the generated report, where the visualization image data is configured to be displayed using a display device and comprises visual representations of portions of the reporting data;
identify a set of datasets within the reporting data;
generate visualization rendering data for the set of datasets based on associations between the visualization metadata and each of the datasets in the set of datasets, wherein the visualization metadata describes at least one graphical primitive associated with at least one piece of reporting data; and
render visualization image data for each of the datasets in the set of datasets based on the visualization rendering data and a corresponding dataset, wherein at least one piece of visualization image data is identified as a master visualization, wherein a slave visualization relates to another piece of visualization image data, wherein the slave visualization has a relationship with the master visualization, and wherein the rendering of the visualization image data comprises to:
update the master visualization and the slave visualization based on input data, wherein each piece of the input data associated with the master visualization is mapped to the slave visualization, and wherein at least one piece of the input data associated with the slave visualization is not mapped to the master visualization.

US Pat. No. 9,910,741

NON-DESTRUCTIVE DATA STORAGE

Workday, Inc., Pleasanto...

1. A system for non-destructive data storage including:
an interface to receive a request to obtain information with respect to an instance of an object, wherein the request to obtain
information has an associated date and an associated time for a state of the information; and

a processor to:
retrieve the information from a chain of effective changes associated with the instance of the object, wherein the chain of
effective changes includes a plurality of effective changes, the plurality of effective changes including a first effective
change and a second effective change, the first effective change and the second effective change both including a transaction
time pointer, an effective time pointer, a field list of changes, and a prior pointer, and wherein the retrieving of the information
comprises to:

compare an effective date and an effective time associated with the first effective change with the associated date and the
associated time; and

in response to a determination that the effective date and the effective time associated with the first effective change are
later than or equal to the associated date and the associated time, obtain the second effective change to retrieve the information
based on a next pointer associated with the first effective change.

US Pat. No. 9,881,037

METHOD FOR SYSTEMATIC MASS NORMALIZATION OF TITLES

Workday, Inc., Pleasanto...

1. A system for determining a canonical title comprising:
an interface to:
receive a new title; and
a processor to:
generate a set of n-grams based on the new title, wherein an n-gram of the set of n-grams comprises one or more contiguous
words of the new title;

assign one or more labels for the new title, wherein assigning the one or more labels for the new title comprises searching
a canonical database for identical n-grams and retrieving labels associated with the identical n-grams, wherein the one or
more labels for the new title and the labels associated with the identical n-grams are assigned to one or more attributes
of a set of attributes; and

map the new title to a canonical title based on the one or more labels for the new title, wherein mapping the new title to
the canonical title comprises determining whether any canonical title has identical associated labels as the one or more labels
for the new title, wherein having an identical associated label comprises having a same label assigned to a same attribute.

US Pat. No. 9,798,889

SPREADSHEET SHARED REGION AND CELL PERMISSIONS

Workday, Inc., Pleasanto...

1. A system for spreadsheet region and cell sharing permissions comprising:
an interface to:
receive a request to display a subset of cells of a spreadsheet document; and
a processor to:
determine whether to enable display access to the subset of the cells of the spreadsheet document based at least in part on
a set of user access descriptors, wherein the set of user access descriptors relate to permissions at different levels of
document granularity, wherein the different levels of document granularity from coarse to fine comprise a group of workbooks,
a workbook, a sheet, a large region within one sheet, a small region within the large region, and a cell within a region,
wherein each region includes more than one cell, wherein the large region includes more cells than the small region, wherein
the large region includes less cells than the one sheet, and wherein the determining of whether to enable display access to
the subset of the cells of the spreadsheet document comprises to:

determine whether permissions associated with a finer granularity of data conflict with permissions associated with a courser
granularity of data; and

in response to a determination that the permissions associated with the finer granularity of data conflict with the permissions
associated with the courser granularity of data, override the permissions associated with the courser granularity of data
with the permissions associated with the finer granularity of data;

in response to a determination that display access is enabled:
provide and display data associated with the subset of the spreadsheet document document;
determine whether to enable modify access to the subset of the cells of the spreadsheet document based at least in part on
the set of user access descriptors; and

in response to a determination to enable modify access to the subset of the cells of the spreadsheet document:
locate, using a pointer formula, an original cell in the subset of cells of the spreadsheet document in a database storage;
store a modification to the original cell in the database storage; and
enable modify access for a cell of a shared location linked to the original cell in the subset of cells based on a dependency
graph, the dependency graph describing links between the cells of the subset of the spreadsheet document and the shared location;
and

in response to a determination that display access is not enabled, provide an indication of access denial for display.

US Pat. No. 9,767,173

SYSTEMS AND METHODS FOR INTEREST-DRIVEN DATA SHARING IN INTEREST-DRIVEN BUSINESS INTELLIGENCE SYSTEMS

Workday, Inc., Pleasnton...

1. An interest-driven data sharing server system, comprising:
raw data storage storing raw data, where a portion of the raw data comprises unstructured data;
an interest-driven data sharing server comprising:
a processor;
a memory connected to the processor and storing an interest-driven data sharing application;
aggregate data storage storing:
data description metadata describing the raw data; and
previously generated reports comprising previous reporting data and previous reporting data requirements;
wherein the interest-driven data sharing application directs the processor to:
receive a report specification, where the report specification comprises at least one reporting data requirement;
locate at least one previously generated report stored in the report aggregate data storage based upon the at least one data
requirement of the report specification and the previous reporting data requirements of the reports stored in the aggregate
data storage;

identify raw data stored in the raw data storage that satisfies the at least one data reporting requirement of the report
specification using the at least one reporting data requirement and the data description metadata describing the raw data
stored in the aggregate data storage;

calculate redundant data metadata between the located at least one previously generated report and the identified raw data,
wherein the redundant data metadata identifies data common to the identified raw data and the previous reporting data in the
located at least one previously generated report, wherein the at least one reporting data requirement comprises at least one
reporting data dimension where each of the at least one reporting data dimensions corresponds to one of the plurality of dimensions
associated with the previously generated reports, and wherein the calculating of the redundant data metadata between the located
at least one previously generated report and the identified raw data comprises to:

build a data dimension dictionary comprising a plurality of data dimensions associated with the previously generated reports;
and

compare the data dimension directory and the at least one reporting data requirement;
determine modified reporting data requirements using the redundant data metadata, where the modified reporting data requirements
exclude the common data identified by the redundant data metadata;

retrieve updated source data from the raw data storage using the modified reporting data requirements; and
generate reporting data for the report specification from the updated source data and the previous reporting data contained
in the at least one previously generated report using the at least one data requirement of the report specification.

US Pat. No. 10,127,673

WORD BOUNDING BOX DETECTION

Workday, Inc., Pleasanto...

1. A system for determining bounding boxes, comprising:an input interface configured to receive an image; and
a processor configured to:
detect a line associated with connected components in the image;
determine gap sizes within the line, wherein determining the gap sizes within the line comprises determining a line angle;
determine a word structuring element size using the gap sizes; and
determine bounding boxes for the line based at least in part on the word structuring element size.

US Pat. No. 10,083,096

MANAGING DATA WITH RESTORING FROM PURGING

Workday, Inc., Pleasanto...

1. A system for restoring purged data, comprising:an input interface to receive an indication of purged data to restore; and a processor to:
reinstate the purged data, comprising:
copying the purged data from a purge memory to an active memory; and removing indications of the purged data being in a purged state;
rebuild one or more relations to the purged data severed at a most recent purge time using an effective change stack for the purged data; and
update the effective change stack to indicate the purged data has gone through an additional purge cycle;
wherein rebuilding the one or more relations to the purged data comprises:
selecting a most recent effective change of the change stack related to removal of weak references; and
in response to the most recent effective change of the change stack comprising removal of a relation at the most recent purge time, rebuilding the relation.

US Pat. No. 10,083,060

SYSTEM FOR ERROR CHECKING OF PROCESS DEFINITIONS FOR BATCH PROCESSES

Workday, Inc., Pleasanto...

1. A system for processing a batch job, comprising: a processor configured to:receive a batch job comprising a sequential or parallel flow of operations and a set of input parameters, wherein each operation has a defined input type and a defined output type, and wherein the operations comprise a first operation, a second operation, and a third operation that operate on a data type that is not a simple data type, wherein the first operation is performed on a set of data objects, wherein the set of data objects comprises one of the following: a set of employees, a set of organizations, or a set of pay values, and wherein the batch job has a time bound;
verify that the batch job can run successfully, wherein verifying includes:
checking that a first operation output defined type is compatible with a second operation input defined type when a first operation output is connected to a second operation input;
querying the first operation to determine a set of parameters used by calculations in the first operation;
checking that the set of parameters used by the calculations in the first operation is included in the set of input parameters; and
checking that a second operation output defined type and a third operation output defined type are of a common type when a second operation output and a third operation output are connected to inputs of a join operation; and in response to verifying that the batch job can run successfully, run the batch job; and
a memory coupled to the processor and configured to provide the processor with instructions.

US Pat. No. 9,940,375

SYSTEMS AND METHODS FOR INTEREST-DRIVEN DISTRIBUTED DATA SERVER SYSTEMS

Workday, Inc., Pleasanto...

1. An interest-driven distributed data server system, comprising:a processor;
a memory connected to the processor and configured to store an interest-driven distributed data server application;
aggregate data storage configured to store aggregate data, where a portion of the aggregate data is generated using job response data; and
directory storage configured to store a data source directory;
wherein the data source directory comprises:
at least one reference to at least one data source configured to store raw data; and
data source metadata describing the at least one data source, wherein the data source metadata includes data source performance data; and
wherein the interest-driven distributed data server application configures the processor to:
obtain reporting data requirements, where the reporting data requirements comprise reporting data metadata, wherein the reporting data metadata identifies at least one data source;
determine at least one data dimension using the reporting data requirements;
for each data dimension:
identify at least one data source identified using the data source metadata that can provide data associated with the data dimension;
generate data source job data for at least one of the identified at least one data source based on the data source metadata, wherein the data source job data is transmitted to a second data source not included in the at least one data source, wherein the at least one data source can provide the data associated with the data dimension, and wherein the generating of the data source job data comprises to:
request job response data based on an expected size of the job response data, an expected processing load, a time to execute the generated data source job data, or any combination thereof;
transmit the data source job data to the at least one of the identified at least one data source; and
receive the job response data from the at least one of the identified at least one data source;
update at least one piece of reporting data metadata based on the second data source;
generate data source job data for at least one of the identified at least one data source based on the data source metadata, wherein the at least one data source provides the data and the data source job data is configured to optimize the performance of the at least one data source based on the data source performance data;
store the received job response data in the aggregate data storage;
build reporting data based on the reporting data requirements; and
transmit the reporting data.

US Pat. No. 9,892,178

SYSTEMS AND METHODS FOR INTEREST-DRIVEN BUSINESS INTELLIGENCE SYSTEMS INCLUDING EVENT-ORIENTED DATA

Workday, Inc., Pleasanto...

1. An interest-driven business intelligence system for processing business data, comprising:
raw data storage comprising at least one hardware processor and at least one memory, containing raw data and capable of executing
extract, transform, and load (ETL) processes; and

an intermediate processing layer comprising at least one hardware processor, at least one memory, and a data mart containing
metadata that describes the raw data;

wherein the intermediate processing layer is configured to automatically:
generate metadata describing the raw data;
store the generated metadata using the data mart;
derive reporting data requirements from at least one report specification based on the metadata; and
compile an interest-driven data pipeline based upon the reporting data requirements, wherein compiling the interest-driven
data pipeline comprises:

generating ETL processing jobs to generate event-oriented data from the raw data by:
obtaining raw data from a plurality of fact tables stored using the raw data storage;
filtering the raw data based on the metadata describing the raw data;
determining ordering data based on the metadata describing the raw data, wherein the ordering data comprises at least one
dimension described in the plurality of fact tables;

aligning, based on the ordering data, the filtered raw data to generate event-oriented data, wherein the aligned filtered
raw data comprises data taken from the plurality of fact tables and ordered based on at least one dimension described in the
ordering; data, wherein the aligning of the filtered raw data comprises:

 mapping the ordering data to the filtered raw data, wherein the ordering data is mapped to the at least one dimension of
the filtered raw data; and

 resolving differences between the ordering data and the metadata to obtain the event-oriented data;
storing the event-oriented data in the data mart;
generating event-oriented metadata describing the event-oriented data; and
storing the event-oriented metadata in the data mart;
generating reporting data including data satisfying the reporting data requirements based on the event-oriented data; and
storing the reporting data in the data mart for exploration by an interest-driven data visualization system; and
update the event-oriented data based on a request received from the interest-driven data visualization system, wherein updating
the event-oriented data comprises determining redundancies between the event-oriented data and updated event-oriented data,
wherein determining the redundancies is based at least in part on the event-oriented metadata.

US Pat. No. 10,289,672

THREADING SPREADSHEET CALCULATIONS

Workday, Inc., Pleasanto...

1. A system for threading spreadsheet calculations, comprising:an input interface to receive a request to perform spreadsheet calculations; and
a processor to:
determine a data flow graph based at least in part on formulas of a spreadsheet;
determine a plurality of spreadsheet threads based at least in part on the data flow graph, comprising to:
determine a first leaf node associated with a first spreadsheet thread and a second leaf node associated with a second spreadsheet thread based on the data flow graph, the plurality of spreadsheet threads including the first spreadsheet thread, and the second spreadsheet thread; and
indicate to execute the plurality of spreadsheet threads to determine the spreadsheet calculation results, comprising to:
execute the first spreadsheet thread and the second spreadsheet thread in parallel to determine the spreadsheet calculation results, comprising to:
in the event that the execution of the first spreadsheet thread has been completed, update a ready table to indicate that the execution of the first spreadsheet thread has been completed;
in the event that the execution of the second spreadsheet thread has been completed, update the ready table to indicate that the execution of the second spreadsheet thread has been completed; and
in the event that the ready table indicates that the execution of the first spreadsheet thread and the second spreadsheet thread have been completed, determine that the plurality of spreadsheet threads have been completed.

US Pat. No. 10,162,529

DYNAMIC THREE-TIER DATA STORAGE UTILIZATION

Workday, Inc., Pleasanto...

1. A method for dynamically utilizing data storage, comprising:determining, using a processor, whether uncompressed storage of a server is above an uncompressed storage threshold, comprising determining whether a system performance metric satisfies a system performance metric criterion, wherein the system performance metric is based at least in part on a system processing capability comprising one or more of a transaction processing rate, and a calculation speed; and
in response to the uncompressed storage being above the uncompressed storage threshold:
determining an amount of uncompressed data to remove for the uncompressed storage to meet an uncompressed storage target, wherein the uncompressed storage target is determined to achieve a system performance metric target;
determining an archiving threshold to remove the amount of uncompressed data, wherein the archiving threshold is an activity threshold;
setting the archiving threshold;
determining at least one data object that satisfies the archiving threshold and space to store the at least one data object in parallel;
removing data objects from the uncompressed storage based at least in part on the archiving threshold to achieve the system performance metric target; and
discarding a data object of the data objects in response to a determination that an object activity of the data object is below an offloading threshold associated with a first compressed storage of the server, and a copy of the data object is stored in a second compressed storage of the server, wherein the server comprises design-time metadata and runtime metadata.

US Pat. No. 10,193,853

WEB BROWSER OR WEB SERVICE BASED DETECTION OF INTERNET FACING DNS SERVER

Workday, Inc., Pleasanto...

1. A system for determining an IP address of an Internet facing DNS server, comprising:an input interface configured to:
receive a request for a web page from a client system, wherein the client system comprises the Internet facing DNS server in communication with a user of the client system, wherein the request includes a detection URL; and
a hardware processor configured to:
determine an ID code from the detection URL;
determine the IP address of the Internet facing DNS server based at least in part on the ID code;
determine a distance between an internet facing DNS server geolocation and a user geolocation; and
provide, using the web page, one or more of the following: the internet facing DNS server geolocation or the distance between the internet facing DNS server geolocation and the user geolocation.

US Pat. No. 10,187,203

SECURE STORAGE ENCRYPTION SYSTEM

Workday, Inc., Pleasanto...

1. A system for secure storage of data comprising:a key database;
a hardware processor configured to:
receive a request associated with securely storing data;
encrypt a tenant service key using a tenant master key to obtain an encrypted tenant service key, wherein the data is encrypted using the tenant service key;
encrypt the tenant master key using a customer key to obtain an encrypted tenant master key;
assign a first identifier for the encrypted tenant service key, a second identifier for the encrypted tenant master key, and a third identifier for the customer key;
store the encrypted tenant service key, the encrypted tenant master key, and the first, second, and third identifiers in the key database; and
store the customer key and the first, second, and third identifiers in a hardware security module, wherein the hardware security module is located remotely from the key database, wherein a key management system requests operations to be performed with the customer key, wherein the encrypted tenant master key is transmitted from the key management system to a key release system, wherein the customer key never leaves the key release system, wherein the encrypted tenant master key is decrypted by the key release system using the customer key to obtain a decrypted tenant master key, and wherein the decrypted tenant master key is transmitted from the key release system to the key management system.

US Pat. No. 10,177,908

SECURE STORAGE DECRYPTION SYSTEM

Workday, Inc., Pleasanto...

1. A system for secure retrieval of stored data comprising:an encrypted key database configured to store an encrypted tenant service key and a first encrypted tenant master key;
a processor configured to:
receive a request to access encrypted data;
request decryption of the first encrypted tenant master key to obtain a first unencrypted tenant master key, wherein the decryption of the first encrypted master key is approved by a key release system, wherein requesting decryption of the first encrypted tenant master key comprises:
generating an unlock request message, wherein the unlock request message comprises the first encrypted tenant master key and an identifier associated with a customer key;
sending the unlock request message to the key release system, wherein the key release system comprises the customer key; and
receiving from the key release system an unlock response message, wherein the unlock response message comprises a second encrypted tenant master key, wherein the key release system decrypts the first encrypted tenant master key using the customer key to obtain the first unencrypted tenant master key and encrypts the first unencrypted tenant master key using a public key of a public/private key pair to obtain the second encrypted tenant master key;
decrypt the second encrypted tenant master key using a private key of the public/private key pair to obtain a second unencrypted tenant master key;
decrypt the encrypted tenant service key using the second unencrypted tenant master key to obtain an unencrypted tenant service key; and
authorize a response to the request using the unencrypted tenant service key, wherein the encrypted data is decrypted using the unencrypted tenant service key.

US Pat. No. 10,164,943

DETECTION AND PREDICTION OF WEB INTERACTION PERFORMANCE ISSUES

Workday, Inc., Pleasanto...

1. A system for estimating client system web interaction performance, comprising:a processor; and
a memory coupled with the processor, wherein the memory is configured to provide the processor with instructions which when executed cause the processor to:
receive a plurality of client system locations and associated performance data; and
receive a location of interest;
determine an estimated client system web interaction performance based at least in part on the plurality of client system locations and the associated performance data and the location of interest, wherein the associated performance data is determined based at least in part on determining an internet facing DNS server from a client system location of the plurality of client system locations using an ID code and a testing URL, wherein the determining of the internet facing DNS server comprises to:
receive, from the internet facing DNS server, a DNS lookup request of the testing URL to resolve an IP address of a detection host name included in the testing URL, the DNS lookup request including an IP address of the internet facing DNS server, the detection host name including the ID code;
store, in a database, the IP address of the internet facing DNS server and the ID code;
receive, using a web server, a request for a webpage, the request including the ID code; and
return, using the web server, the webpage including the IP address of the internet facing DNS server based on the ID code; and
provide the estimated client web interaction performance based on the IP address of the internet facing DNS server.

US Pat. No. 10,148,432

SECURE STORAGE ENCRYPTION SYSTEM

Workday, Inc., Pleasanto...

1. A system for secure storage of data comprising:a key database;
a hardware processor configured to:
receive a request associated with securely storing data;
encrypt a tenant service key using a tenant master key to obtain an encrypted tenant service key, wherein the data is encrypted using the tenant service key;
encrypt the tenant master key using a customer key to obtain an encrypted tenant master key;
assign a first identifier for the encrypted tenant service key, a second identifier for the encrypted tenant master key, and a third identifier for the customer key;
store the encrypted tenant service key, the encrypted tenant master key, and the first, second, and third identifiers in the key database; and
store the customer key and the first, second, and third identifiers in a hardware security module, wherein the hardware security module is located remotely from the key database, wherein a key management system requests operations to be performed with the customer key, wherein the encrypted tenant master key is transmitted from the key management system to a key release system, wherein the customer key never leaves the key release system, wherein the encrypted tenant master key is decrypted by the key release system using the customer key to obtain a decrypted tenant master key, and wherein the decrypted tenant master key is transmitted from the key release system to the key management system.

US Pat. No. 10,311,078

IDENTIFYING AND FORMATTING DATA FOR DATA MIGRATION

Workday, Inc., Pleasanto...

1. A method, comprising:receiving, from a remote client, at least one data object;
identifying a plurality of field groups based on the at least one data object, wherein the plurality of field groups is linked to the at least one data object and each of the plurality of field groups includes at least one data field;
creating, by a processor, a simple data set, wherein creating includes:
converting a format of the identified at least one field group to a format associated with the simple data set, the conversion including translating a linking of (i) the identified at least one field group to the at least one data object to (ii) formatting of the simple data set such that the simple data set includes a subset of data of the at least one data object, at least some of data not included in the subset of data being derivable from the subset of data; and
modifying the simple data set generating a modified simple data set to include the at least one data field; and
migrating the modified simple data set to a destination.

US Pat. No. 10,311,141

DATA DRIVEN SPREADSHEET CHART SYSTEM

Workday, Inc., Pleasanto...

1. A data-driven spreadsheet chart system, comprisingan interface to:
receive a formula entered into a cell of a spreadsheet document, wherein the formula includes a function that references a set of data, wherein the formula takes as arguments a chart-type parameter and a primary-data parameter, wherein the formula takes a base configuration parameter, the base configuration parameter including a location of a legend, a title, a format and a location of an axis, or any combination thereof, and wherein the formula takes an override parameter to override the base configuration parameter, the base configuration parameter corresponding to a standard formatting style; and
a processor to:
host the spreadsheet document;
compile the formula into a byte code version, comprising to:
perform a syntactic check, a semantic check, or both on the formula; and
in response to a determination that syntactic check, a semantic check, or both are completed without error, generate the byte code version from the formula using a compiler; and
render a visual representation of the data for display entirely within the cell based on the base configuration parameter, wherein the rendering of the visual representation is performed using the byte code version, wherein the visual representation comprises the legend, the title, the axis, or any combination thereof, wherein the visual representation comprises a chart, wherein the visual representation exists in the same plane as neighboring cells of the cell, and wherein the visual representation exists in the same sheet of the spreadsheet document as the neighboring cells of the cell.

US Pat. No. 10,313,261

TENANT ASSIGNMENT SYSTEM

Workday, Inc., Pleasanto...

1. A system for tenant assignment, comprising:an interface to:
receive a tenant resource usage data and a hardware resource data,
wherein the tenant resource usage data comprises a tenant information on a set of tenants,
wherein the hardware resource data comprises a hardware resource information on a set of hardware resources; and
a processor to:
create a first tenant usage profile for a first tenant in the set of tenants based at least in part on the tenant resource usage data, wherein the first tenant usage profile comprises a first maximum tenant usage case for a time period, wherein the first maximum tenant usage case for the time period comprises maximum tenant usage by the first tenant of a first recurring time segment and a second recurring time segment over a completed period of time;
create a second tenant usage profile for a second tenant in the set of tenants based at least in part on the tenant resource usage data, wherein the second tenant usage profile comprises a second maximum tenant usage case for the time period, wherein the second maximum tenant usage case for the time period comprises maximum usage by the second tenant of the first recurring time segment and the second recurring time segment over the completed period of time;
develop a tenant assignment model based at least in part on the first maximum tenant usage case, the second maximum tenant usage case, and the hardware resource data;
solve the tenant assignment model to determine a suggested tenant assignment comprising an assignment of the set of tenants to the set of hardware resources, wherein the tenant assignment model is caused to be solved by an integer linear program solver; and
provide the suggested tenant assignment.

US Pat. No. 10,241,693

DYNAMIC TWO-TIER DATA STORAGE UTILIZATION

Workday, Inc., Pleasanto...

1. A method for dynamically utilizing data storage, comprising:determining, using a processor, whether a data storage activity criterion of a first data storage of a server is satisfied, wherein the first data storage stores uncompressed data; and
in response to a determination that the data storage activity criterion is satisfied:
determining a new archiving threshold based on a target data storage usage level, wherein determining the new archiving threshold comprises determining an archiving threshold to remove a necessary amount of data for a data storage usage to be below the target data storage usage level; and
setting the archiving threshold, wherein the new archiving threshold comprises a threshold tick value and a threshold total access count, wherein a tick value is a last tick within which data was accessed;
determining at least one data object that satisfies the new archiving threshold and space to store the at least one data object in parallel; and
archiving a data of the first data storage in response to a determination that a data tick value is below the threshold tick value, or a determination that the data tick value is the same as the threshold tick value and a data total access count is below the threshold total access count, wherein archiving the data comprises compressing the data to obtain a compressed data and storing the compressed data in a second data storage of the server, wherein the server comprises design-time metadata and runtime metadata.

US Pat. No. 10,210,150

GRID-BASED USER INTERFACE SYSTEM

Workday, Inc., Pleasanto...

1. A system for displaying data, comprising:an interface configured to receive an indication of a matrix element for expansion; and
a processor configured to:
provide a matrix for display, wherein the matrix includes a plurality of matrix elements, and wherein the plurality of matrix elements include at least one matrix element including a label, an indication of a number of associated objects, and a name of an associated object, wherein the providing of the matrix for display comprises to:
determine whether a current signed-in user has security rights to see a set of attributes of an object of the associated objects, the set of attributes including X axis data attribute for the object, Y axis data attribute for the object, or both; and
in response to a determination that the current signed-in user does not have security rights to see the set of attributes of the object of the associated objects, move the object to an unplotted area of the matrix; and
provide a modified matrix for display, in the event that the matrix element is selected for expansion, wherein the modified matrix for display includes a matrix element expanded based at least in part on the matrix element selected, wherein in the event that the current signed-in user does not have security rights to see a set of attributes of one object of the associated objects, the modified matrix includes the unplotted area, and wherein the providing of the modified matrix for display comprises to:
determine whether the at least one matrix element is in the same row as the expanded matrix element; and
in response to a determination that the at least one matrix element is in the same row as the expanded matrix element, provide the label associated with the at least one matrix element, the indication of the number of associated objects, and the at least one matrix element for display with an expanded vertical dimension and a compressed horizontal dimension.

US Pat. No. 10,204,237

SENSITIVE DATA SERVICE ACCESS

Workday, Inc., Pleasanto...

1. A system for accessing data, comprising:an interface to receive a request to access data and requestor information; and
a processor to:
retrieve a location context of the data, wherein the location context of the data comprises one or more of an access policy location to which the access policy applies, and an entry location the data was entered;
determine whether the data comprises sensitive data configured to have an assigned access policy and an assigned storage policy, comprising determining whether the assigned access policy has a first location context that matches the location context of the data, and determining whether the assigned storage policy has a second location context that matches the location context of the data, wherein the assigned access policy comprises information on one or more security groups allowing or denying data access;
in response to a sensitive data determination that the data comprises sensitive data configured to have the assigned access policy and the assigned storage policy:
determine whether access is allowed by the assigned access policy based at least in part on the requestor information; and
in response to an access determination that access is allowed:
retrieve the data based on information provided by a token; and
provide the data.

US Pat. No. 10,191,897

DATA FLOW VIEW FOR A SPREADSHEET

Workday, Inc., Pleasanto...

1. A system for a data flow view for a spreadsheet, comprising:an input interface to receive a first spreadsheet and an indication of a spreadsheet cell of interest being located on the first spreadsheet; and
a processor to:
determine a first set of spreadsheet cells that the spreadsheet cell of interest depends on, comprising to:
determine whether a first cell of the spreadsheet cell of interest depends on a second cell of a second spreadsheet, the first spreadsheet being different from the second spreadsheet; and
in response to a determination that the first cell of the spreadsheet cell of interest depends on a second cell of second spreadsheet, add the second cell to the first set of spreadsheet cells;
determine a second set of spreadsheet cells that depends on the spreadsheet cell of interest, comprising to:
determine whether a third cell of third spreadsheet depends on the first cell of the spreadsheet cell of interest, the third spreadsheet being different from the first spreadsheet; and
in response to a determination that the third cell of third spreadsheet depends on the first cell of the spreadsheet cell of interest, add the third cell to the second set of spreadsheet cells;
determine whether a fourth cell of the first set of spreadsheet cells matches a fifth cell of the second set of spreadsheet cells;
in response to a determination that the fourth cell matches the fifth cell, omit including the fourth cell in the first set of spreadsheet cells or the fifth cell in the second set of spreadsheet cells;
provide a spreadsheet cell data flow view for the spreadsheet cell of interest based at least in part on the first set of spreadsheet cells and the second set of spreadsheet cells, comprising to:
determine a new first set of spreadsheet cells that a new spreadsheet cell of interest depends on, wherein a first arrow indicates that the new spreadsheet cell of interest depends on a spreadsheet cell of the new first set of spreadsheet cells; and
determine a new second set of spreadsheet cells that depends on the new spreadsheet cell of interest, wherein a second arrow indicates that a spreadsheet cell of the new second set of spreadsheet cells depends on the new spreadsheet cell of interest; and
in response to a determination that an indication of a new spreadsheet cell of interest is received:
provide a spreadsheet cell data flow view for the new spreadsheet cell of interest.

US Pat. No. 10,140,346

SYSTEMS AND METHODS FOR INTEREST-DRIVEN BUSINESS INTELLIGENCE SYSTEMS INCLUDING GEO-SPATIAL DATA

Workday, Inc., Pleasanto...

21. A method for creating a report utilizing an interest-driven business intelligence system, comprising:performing extract, transform, and load (ETL) processes;
storing raw data in raw data storage using an interest-driven business intelligence system, where the raw data comprises unstructured data;
generating metadata describing the raw data using the interest-driven business intelligence system;
receiving report definitions generated utilizing the metadata describing the raw data using the interest-driven business intelligence system;
automatically generating reporting data requirements derived from report definitions using the interest-driven business intelligence system;
automatically compiling an interest-driven data pipeline that is part of the interest-driven business intelligence system using the reporting data requirements and the raw data;
obtaining geo-spatial data from the interest-driven data pipeline based on the generated reporting data requirements using the interest-driven business intelligence system, where the geo-spatial data comprises a set of dimensions and the geo-spatial data is bounded based on at least one dimension in the set of dimensions;
storing the geo-spatial data in a data mart, wherein the geo-spatial data is stored as first parallel arrays of data with a first parallel array representing second values of a first particular field of data;
filtering the raw data based on the metadata describing the raw data;
applying transformations to the raw data based on the metadata describing the raw data;
generating aggregate data based on the transformed data, wherein the aggregate data comprises structured data generated using ETL processes from the raw data;
storing the aggregate data in the data mart, wherein the aggregate data is stored as second parallel arrays of data with a second parallel array representing second values of a second particular field of data;
identifying ordering data based on a dimension across a plurality of pieces of the geo-spatial data;
ordering, based on the ordering data, the plurality of pieces of the geo-spatial data to obtain ordered geo-spatial data;
determining a fad based on the ordered geo-spatial data;
identifying ordering data based on a dimension across a plurality of pieces of the geo-spatial data;
ordering, based on the ordering data, the plurality of pieces of the geo-spatial data to obtain ordered geo-spatial data;
determining a fad based on the ordered geo-spatial data;
generating reporting data from the reporting data requirements using the interest-driven data pipeline, where the reporting data is based on a portion of the geo-spatial data; and
storing the generated reporting data in the data mart within the interest-driven business intelligence system.

US Pat. No. 10,284,371

BRUTE FORCE ATTACK PREVENTION SYSTEM

Workday, Inc., Pleasanto...

1. A system for preventing a brute force attack, comprising:an output interface to:
provide a workfactor, a challenge token, and a login page to a client;
an input interface to:
receive a response token, a username, and a password;
a processor to:
determine whether the response token satisfies a condition based at least in part on the workfactor, wherein the determining of whether the response token satisfies the condition comprises to:
concatenate the response token and the challenge token to obtain a concatenated token;
compare a number of leading zeros of a hash of the concatenated token with a first threshold number of bits, wherein the condition relates to the number of leading zeros of the hash of the concatenated token being greater than or equal to the first threshold number of bits; and
in response to a determination that the number of leading zeros of the hash of the concatenated token is greater than or equal to the first threshold number of bits, determine that the response token satisfies the condition; and
in response to a determination that the response token satisfies the condition based at least in part on the workfactor, determine whether the username and password are valid, wherein the workfactor is increased in response to a determination that the username and password are determined not to be valid.

US Pat. No. 10,282,058

TOUCH SCREEN CONTEXT MENU

Workday, Inc., Pleasanto...

1. A system for context menus, comprising:an input interface to receive an activation indication for a first context menu and a cycling indication to cycle from the first context menu to a next context menu; and
a processor to:
provide display information for the first context menu in response to the activation indication, wherein the first context menu comprises a first set of petals in a first pattern centered on an item;
provide display information for a submenu of the first context menu in response to a selection indication, wherein the selection indication is received using the input interface of a petal of the first set of petals, and wherein the submenu comprises a second set of petals in a second pattern extending from the petal of the first set of petals; and
provide the next context menu in response to the cycling indication, wherein successive cycling indications cycle through an ordered sequence of context menus, wherein the ordered sequence of context menus comprises one or more of an ordered sequence of petal geometries and an ordered sequence of petal colors.

US Pat. No. 10,198,470

PROCESS FOR EMBEDDED INTELLIGENCE

Workday, Inc., Pleasanto...

1. A system comprising:an interface for receiving an input object for a process associated with an embedded intelligence applet, wherein the input object is received from a field in the interface as a user entering process data advances to a next field in the interface, wherein the process comprises hiring an employee, modifying a salary of an employee, giving an employee a promotion, or transferring an employee between divisions of a business, wherein receiving the input object as the user advances to the next field automatically activates the embedded intelligence applet and makes visible an embedded intelligence applet window on the interface, wherein the embedded intelligence applet is configurable, wherein the input object includes at least one of the following: an employee name, a new employee salary, a new employee title, or a new employee business division, and wherein the embedded intelligence applet is one embedded intelligence applet of a plurality of embedded intelligence applets associated with the process;
a processor to:
search a database for a set of objects, wherein the set of objects is found based at least in part on the input object, the set of objects is found based on a first input object or a second input object; and
determine display information for the embedded intelligence applet based at least in part on the set of objects and embedded intelligence applet configurations, wherein the embedded intelligence applet configurations comprise an embedded intelligence applet sequence, the embedded intelligence applet sequence comprises a display order of a first embedded intelligence applet and a second embedded intelligence applet, wherein the first embedded intelligence applet and the second embedded intelligence applet both including a set of prompts, the set of prompts corresponding to variables that need to be supplied to its corresponding applet in order to be run, the set of prompts being associated with business process exposed fields, wherein in response to a determination that the first embedded intelligence applet is being displayed, the first embedded intelligence applet is maximized or shown at full size and the second embedded intelligence applet is minimized or hidden, and wherein in response to a determination that the second embedded intelligence applet is being displayed, the second embedded intelligence applet is maximized or shown at full size and the first embedded intelligence applet is minimized or hidden.

US Pat. No. 10,198,256

SYNCHRONIZATION OF CODE EXECUTION

Workday, Inc., Pleasanto...

2. A method for determining a toggle value, comprising:receiving a request for the toggle value associated with a toggle;
determining, using a processor, an indicated toggle value associated with the toggle;
determining the toggle value associated with the toggle based at least in part on the indicated toggle value and a set of dependencies;
providing the toggle value associated with the toggle; and
determining a dependency value associated with the set of dependencies.