This guide explains how to create an auto-deactivating-user task in OpenMRS. The task involves setting the "number of days to retire users" via the user interface and then running the auto-deactivation task.
Setting the Number of Days to Retire Users
Log in to OpenMRS.
Set the global property
number_of_days_to_auto_retire_users
:Find global property
GP_NUMBER_OF_DAYS_FOR_AUTO_RETIRING_USER
.Enter the desired number of days of inactivity after which a user should be retired.
Save the changes.
Running the Auto-Deactivating User Task
The auto-deactivating user task is implemented as a scheduled task in OpenMRS. This task will automatically retire users who have been inactive for the specified number of days.
Implementation
The task is defined in the AutoRetireUsersTask
class.
Steps to Schedule the Task:
Fill in the details for the task:
Name: Auto Retire Users
Description: e.g Retires all active users that are inactive for XX number of days specified by the value of the global property 'users.numberOfDaysToRetire'.
Class:
org.openmrs.scheduler.tasks.AutoRetireUsersTask
Start Time: Set the desired start time.
Repeat Interval: Set to
86400
(which represents 24 hours) to run daily.Start on Startup: Set to
true
.Started: Set to
true
to start the task immediately.
Save the Task:
Save the task configuration.
The task will now be scheduled to run at the specified interval, automatically retiring inactive users based on the global property setting.
Example Database Changeset
<changeSet author="name (generated)" id="202405201900-1"> <insert tableName="scheduler_task_config"> <column name="task_config_id" valueNumeric="3"/> <column name="name" value="Auto Retire users"/> <column name="description" value="Retires all active users that are inactive for XX number of days specified by the value of the global property 'users.numberOfDaysToRetire'"/> <column name="schedulable_class" value="org.openmrs.scheduler.tasks.AutoRetireUsersTask"/> <column name="start_time" value="2024-05-22T23:59:59"/> <column name="start_time_pattern" value="MM/dd/yyyy HH:mm:ss"/> <column name="repeat_interval" valueNumeric="86400"/> <column name="start_on_startup" valueBoolean="true"/> <column name="started" valueBoolean="false"/> <column name="created_by" valueNumeric="1"/> <column name="date_created" value="2024-05-20T10:00:00"/> <column name="changed_by"/> <column name="date_changed"/> <column name="last_execution_time"/> <column name="uuid" value="02f598d9-e3bb-4f6f-94b6-182c6856413a"/> </insert> </changeSet>
By following these steps, you can schedule and run the auto-deactivating user task in OpenMRS, ensuring that inactive users are retired after the specified period of inactivity.