List Workflows

Example

You have a SharePoint document library where users are asked to fill some taxonomy fields to classify documents. You cannot make the fields "required" because this is a problem when you upload multiple documents at once.

With kenaflow you create a workflow that checks every file every night and send the last editor an email that asks them to fill in the document classifications.

Getting Started Knowledge

Workflows of this type have only one workflow script that will be applied to all SharePoint list items queried by the workflow.

E.g. SharePoint list items that have changed since the last run of the workflow, can be queried. In this case, the workflow script will be applied to all these modified SharePoint list items.

There is no distinction at workflow level between the status of the SharePoint list items.

A "List Workflow" is connected with exactly one SharePoint list.

"List Workflows" have exactly one workflow script that is applied to the SharePoint list items determined by a condition or query.

For every list item, that applies to the query or condition of the list workflow, a workflow script will be executed.

The script is given various objects:

  • the workflow configuration
  • the current SharePoint Web
  • the current list item
  • a list of the workflow configuration data stored in SharePoint

Each list workflow can have a "pre-query" script run by kenaflow before the list items are queried and the workflow scripts are executed.

There are 3 ways to query list items to be processed:

  • by "LASTMODIFIED" : queries all list items that were modified since the last workflow run
  • by "QUERY" : using kenaflow specific Queries or using CAML
  • by "ALL" : all list items are processed

Background Knowledge

The execution time for a workflow can be limited.

  • When the time is up, kenaflow remembers the last list item ID of the last processed item to continue with the next larger ID on the next run.
  • It is also possible to instruct kenaflow to remember the modification time of the last item to start at this point in time at the next run.

After executing a list worklfow, kenaflow remembers the date and time of the last execution. This point in time is relevant for the determination of the list items to be processed according to the principle LASTMODIFIED.

For workflows that are aborted by kenaflow - e.g. due to exceeding the maximum execution time -, the last processing time is stored. Thus LASTMODIFIED may not deliver the desired result in the next execution!

Workflows that are terminated because the kenaflow application closed - for example, by restarting the computer,- will usually not save the last execution time. This is not possible because the operating system terminates the software. kenaflow tries to save the time. However, there is no guarantee.

LASTMODIFIED should generally be omitted as the query type for list workflows! Rather, smart queries should be developed, based on list items properties to determine whether or not items need to be processed.

For a list workflow, you can specify how many list items should be retrieved per batch. By default this setting is either inherited from the global configuration of kenaflow. By default, it is 1000. It is important to ensure that this value does not collide with SharePoint's "List View Threshold". This can lead to errors. The SharePoint standard "List View Threshold" is 5000.

Users and processes like workflows are constantly working in SharePoint. List items change.

kenaflow uses queries to determine the list items to be processed. If the query has taken place, it is not executed again until all determined elements have been processed. If the elements change in between, they will still be included in the query being processed.

With the "ItemReCheckTime" setting, you can set the point in time (in seconds from the start of the workflow) at which each element is to be checked again to see whether processing is still necessary.

The setting is inherited from the workflow if it is missing or if it has a value of -1, if it exists there, or from the global configuration of kenaflow.

A value of 0 indicates that each list item will be checked without delay, whether it still needs to be processed.

Discussion