Main Page | Modules | Files | Functions | Code Elements | Data Structures | Deprecated

Signoff
[Enterprise Process Modeling]


Detailed Description

A Signoff contains the decision and any relevant comments that a user makes for an authorization. The user is identified via a group member object, because the correct user must play a particular role in the group for which the authorization takes place. All of the signoffs for an authorization are collected in a signoff list.

Signoff is not a subclass of WorkspaceObject, so WSOM functions will not work with signoffs. AOM functions work with signoffs.

Signoff origin

Indicate where a Signoff object is derived from

Defines

Typedefs

Enumerations

Functions


Define Documentation

#define SIGNOFF_ACKNOWLEDGED_DECISION   "Acknowledge"

Definition at line 74 of file signoff.h.

#define SIGNOFF_APPROVE_DECISION   "Approve"

Signoff decisions

Definition at line 71 of file signoff.h.

#define SIGNOFF_NO_DECISION   "No Decision"

Definition at line 73 of file signoff.h.

#define SIGNOFF_NOT_ACKNOWLEDGED_DECISION   "Not Acknowledge"

Definition at line 75 of file signoff.h.

#define SIGNOFF_ORIGIN_ADHOC_ALL_RESOURCEPOOL   4

Definition at line 48 of file signoff.h.

#define SIGNOFF_ORIGIN_ADHOC_RESOURCEPOOL   2

Definition at line 46 of file signoff.h.

#define SIGNOFF_ORIGIN_ADHOC_USER   1

Definition at line 45 of file signoff.h.

#define SIGNOFF_ORIGIN_ALIASLIST   3

Definition at line 47 of file signoff.h.

#define SIGNOFF_ORIGIN_PROFILE   0

Definition at line 44 of file signoff.h.

#define SIGNOFF_ORIGIN_UNDEFINED   9999

Definition at line 49 of file signoff.h.

#define SIGNOFF_REJECT_DECISION   "Reject"

Definition at line 72 of file signoff.h.


Typedef Documentation


Enumeration Type Documentation

Signoff type

Enumerator:
SIGNOFF_REVIEW 
SIGNOFF_ACKNOWLEDGE 
SIGNOFF_NOTIFY 
SIGNOFF_ACTION_UNDEFINED 

Definition at line 62 of file signoff.h.

Signoff type

Enumerator:
SIGNOFF_GROUPMEMBER 
SIGNOFF_RESOURCEPOOL 
SIGNOFF_UNDEFINED 

Definition at line 53 of file signoff.h.


Function Documentation

EPM_API int CR_ask_signoff_accessor ( tag_t  signoff,
tag_t acc 
)

Deprecated:
This function is deprecated and will be removed from Tc12.1 In Tc10.1 onwards, please use EPM_ask_signoff_accessor
Parameters:
signoff  (I)
acc  (O)

EPM_API int CR_ask_signoff_decision ( tag_t  signoff,
CR_signoff_decision_t decision,
char  comments[CR_comment_size_c+1],
date_t decision_date 
)

Deprecated:
This function is deprecated and will be removed from Tc12. In Tc10 please use CR_ask_signoff_decision2. In tc10.1 onwards, please use EPM_ask_signoff_decision
Returns the decision, comments and decision date for a signoff.

Returns CR_approve_decision if decision approved, CR_reject_decision if decision rejected or CR_no_decision if no decision

Parameters:
signoff  (I)
decision  (O)
comments  (O)
decision_date  (O)

EPM_API int CR_ask_signoff_decision2 ( tag_t  signoff,
CR_signoff_decision_t decision,
char **  comments,
date_t decision_date 
)

Deprecated:
This function is deprecated and will be removed from Tc12. In Tc10 onwards, please use EPM_ask_signoff_decision
Returns the decision, comments and decision date for a signoff.

Returns CR_approve_decision if decision approved, CR_reject_decision if decision rejected or CR_no_decision if no decision

Parameters:
signoff  (I)
decision  (O)
comments  (OF)
decision_date  (O)

EPM_API int CR_ask_signoff_groupmember ( tag_t  signoff,
tag_t group_member 
)

Deprecated:
This function is deprecated and will be removed from Tc12.1. In Tc10.1 onwards, please use EPM_ask_signoff_member
Returns the tag of the group member associated with a signoff object.
Parameters:
signoff  (I)
group_member  (O)

EPM_API int CR_ask_signoff_member ( tag_t  signoff,
tag_t theMember 
)

Deprecated:
This function is deprecated and will be removed from Tc12.1. In Tc10.1 onwards, please use EPM_ask_signoff_member
Parameters:
signoff  (I)
theMember  (I)

EPM_API int CR_ask_signoff_resource_pool ( tag_t  signoff,
tag_t resource_pool 
)

Deprecated:
This function is deprecated and will be removed from Tc12.1. In Tc10.1 onwards, please use EPM_ask_signoff_resource_pool
Returns the tag of the resource pool associated with a signoff object.
Parameters:
signoff  (I)
resource_pool  (O)

EPM_API int CR_compare_role_and_group ( tag_t  signoff,
logical match 
)

Deprecated:
This function is deprecated and will be removed from Tc12.1. In Tc10.1 onwards, please use EPM_compare_role_and_group
Parameters:
signoff  (I)
match  (O)

EPM_API int CR_create_signoff ( tag_t  group_member,
tag_t signoff 
)

Deprecated:
This function is deprecated and will be removed from Tc12.1. In Tc10.1 onwards, please use EPM_create_signoff
Creates a new signoff given a group member as input. The description is initialized to '0' meaning "no decision."
Parameters:
group_member  (I)
signoff  (O)

EPM_API int CR_delegate_signoff ( tag_t  signoff,
tag_t  new_group_member_to_delegate_to,
logical  add_audit_file 
)

Deprecated:
This function is deprecated and will be removed from Tc12.1. In Tc10.1 onwards, please use EPM_delegate_signoff
Parameters:
signoff  (I)
new_group_member_to_delegate_to  (I)
add_audit_file  (I)

EPM_API int CR_initialize_signoff ( tag_t  signoff,
tag_t  group_member 
)

Deprecated:
This function is deprecated and will be removed from Tc12.1. In Tc10.1 onwards, please use EPM_initialize_signoff
Initializes the signoff attributes for a newly created instance of a subclass of signoff.
Parameters:
signoff  (I)
group_member  (I)

EPM_API int CR_set_signoff_accessor ( tag_t  signoff,
tag_t  acc 
)

Deprecated:
This function is deprecated and will be removed from Tc12.1 In Tc10.1 onwards, please use EPM_set_signoff_accessor
Parameters:
signoff  (I)
acc  (I)

EPM_API int CR_set_signoff_decision ( tag_t  signoff,
CR_signoff_decision_t  decision,
const char  comments[CR_comment_size_c+1] 
)

Deprecated:
This function is deprecated and will be removed from Tc12. In Tc10, please use CR_set_signoff_decision2. In Tc10.1 onward, please use EPM_set_signoff_decision.
Sets the signoff decision and comments for a signoff. The decision value must be CR_approve_decision for approval/authorize, CR_reject_decision for reject or CR_no_decision for no decision. Values are declared in signoff.h.

Warning:
We do not recommend using this function since the decision will not be recorded in the audit file. The audit file will be the only record of signoff decisions after the job is deleted.
Restrictions:

The ITK program must have logged into the POM as the owner of this signoff in order for this function to work.

Parameters:
signoff  (I)
decision  (I)
comments  (I)

EPM_API int CR_set_signoff_decision2 ( tag_t  signoff,
CR_signoff_decision_t  decision,
const char *  comments 
)

Deprecated:
This function is deprecated and will be removed from Tc12.1 In Tc10.1 onward, please use EPM_set_signoff_decision.
Sets the signoff decision and comments for a signoff. The decision value must be CR_approve_decision for approval/authorize, CR_reject_decision for reject or CR_no_decision for no decision. Values are declared in signoff.h.

Warning:
We do not recommend using this function since the decision will not be recorded in the audit file. The audit file will be the only record of signoff decisions after the job is deleted.
Restrictions:

The ITK program must have logged into the POM as the owner of this signoff in order for this function to work.

Parameters:
signoff  (I)
decision  (I)
comments  (I)

EPM_API int CR_signoff_extent ( int *  n_instances,
tag_t **  instances 
)

Deprecated:
This function is deprecated and will be removed from Tc12.1. In Tc10.1 onwards, please use EPM_signoff_extent
This function allocates an array of tags and stores in the array all signoffs in the database. The array of tags is pointed to by signoffs. The size of the array is stored in signoff_count. The client is responsible for freeing the array of signoffs. Use MEM_free to free the memory pointed to by signoffs.
Parameters:
n_instances  (O) Number of signoffs
instances  (OF) n_instances Array of signoff tags

EPM_API int EPM_ask_last_signoff ( tag_t  ws_object,
tag_t  release_status_tag,
EPM_decision_t decision,
char  signer[WSO_name_size_c+1],
date_t sign_off_date 
)

Deprecated:
This function is deprecated and will be removed from Tc12. In Tc10 onwards, please use EPM_ask_last_signoff2
Fetches the signoff information pertaining to the last signoff that occurs on a Workspace Object. This information is fetched from the audit file.
Parameters:
ws_object  (I) Tag of the Workspace Object
release_status_tag  (I) Tag of the release status object
decision  (O) Decision on the object (Approved, Disapproved, No Decision)
signer  (O) Name of the person performing the last signoff
sign_off_date  (O) Date last signoff was performed

EPM_API int EPM_ask_last_signoff2 ( tag_t  ws_object,
tag_t  release_status_tag,
EPM_decision_t decision,
char **  signer,
date_t sign_off_date 
)

Fetches the signoff information pertaining to the last signoff that occurs on a Workspace Object. This works only if the TC Audit Manager is OFF. This information is fetched from the audit file.

Parameters:
ws_object  (I) Tag of the Workspace Object
release_status_tag  (I) Tag of the release status object
decision  (O) Decision on the object (Approved, Disapproved, No Desicion)
signer  (OF) Name of the person performing the last signoff
sign_off_date  (O) Date last signoff was performed

EPM_API int EPM_ask_reviewers ( tag_t  task_tag,
int *  count,
tag_t **  groupmembers 
)

Signoffs can be assigned to GroupMember objects OR ResourcePool objects that have no user tag. As this ITK can be used to cycle through the reviewers returned and get decisions etc, the release level ITK has been modified to tolerate ResourcePool Objects. However in your own code you must not assume you will get a groupmember tag and should accommodate the possibility of a ResourcePool tag being returned. A common error is that code tries to get the user tag from the returned tag and a ResourcePool object has no user tag. There is safer ITK to use instead now that is explicit about the type of reviewer assigned to the signoff objects. The safer alternative is to get the Signoff object attachments via the EPM_ask_attachments found in epm.h and then ask each Signoff object returned, what type it is via the EPM_ask_signoff_member found in signoff.h. That way you know whether the reviewer is a GroupMember or ResourcePool and make the appropriate subsequent calls.

Parameters:
task_tag  (I) Workflow task
count  (O) Count of signoffs obtained
groupmembers  (OF) count Group members associated with the signoffs

EPM_API int EPM_ask_signoff_accessor ( tag_t  signoff,
tag_t acc 
)

Get accessor for the signoffs

Parameters:
signoff  (I) Signoff
acc  (O) Accessor for the signoff

EPM_API int EPM_ask_signoff_current_task ( tag_t  signoffTag,
tag_t taskTag 
)

Parameters:
signoffTag  (I)
taskTag  (O)

EPM_API int EPM_ask_signoff_decision ( tag_t  signoff,
EPM_signoff_decision_t decision,
char **  comments,
date_t decision_date 
)

Returns the decision, comments and decision date for a signoff.

Returns EPM_approve_decision if decision approved, EPM_reject_decision if decision rejected or EPM_no_decision if no decision

Parameters:
signoff  (I) Signoff
decision  (O) Existing decision for the signoff
comments  (OF) Existing signoff comments
decision_date  (O) Date of the signoff decision

EPM_API int EPM_ask_signoff_details ( tag_t  ws_object,
tag_t  release_status_tag,
int *  no_of_signoffs,
EPM_decision_t **  decisions,
char ***  signers,
date_t **  sign_off_dates 
)

Fetches the signoff information pertaining to the signoffs that occur on a Workspace Object. This works only if the TC Audit Manager is OFF. This information is fetched from the audit file.

The user is responsible to free each string returned in the array individually before freeing up the array itself. Use MEM_free to free up the memory.

Parameters:
ws_object  (I) Tag of the Workspace Object
release_status_tag  (I) Tag of the release status object
no_of_signoffs  (O) Total number of signoffs recorded in the audit file
decisions  (OF) no_of_signoffs Decisions on the object (Approved, Disapproved, No Decision)
signers  (OF) no_of_signoffs Names of the persons performing signoffs
sign_off_dates  (OF) no_of_signoffs Dates when signoffs were performed

EPM_API int EPM_ask_signoff_member ( tag_t  signoff,
tag_t memberTag,
SIGNOFF_TYPE_t memberType 
)

Returns the tag of the member associated with a signoff object. This function replaces CR_ask_signoff_groupmember that is obsolete in V7.

Parameters:
signoff  (I) The signoff tag
memberTag  (O) The group member tag or the resourcepool tag
memberType  (O) The signoff member type. This can be:
SIGNOFF_GROUPMEMBER
SIGNOFF_RESOURCEPOOL
SIGNOFF_UNDEFINED

EPM_API int EPM_ask_signoff_origin_profile ( tag_t  signoff,
tag_t originProfile 
)

Returns the tag of the origin profile given the signoff object tag.

Parameters:
signoff  (I) The signoff tag
originProfile  (O) Origin profile tag, the object that the signoff is created from

EPM_API int EPM_ask_signoff_origin_type ( tag_t  signoffTag,
int *  origin,
tag_t originObject 
)

Returns the origin type and the origin object tag, given the signoff object tag.

Parameters:
signoffTag  (I) The signoff tag
origin  (O) The signoff origin type, specified as below:
SIGNOFF_ORIGIN_PROFILE
SIGNOFF_ORIGIN_ADHOC_USER
SIGNOFF_ORIGIN_ADHOC_RESOURCEPOOL
SIGNOFF_ORIGIN_ADHOC_ALL_RESOURCEPOOL
SIGNOFF_ORIGIN_ALIASLIST
originObject  (O) The tag of the origin object that the signoff is created from

EPM_API int EPM_ask_signoff_resource_pool ( tag_t  signoff,
tag_t resource_pool 
)

Returns the tag of the resource pool associated with a signoff object.

Parameters:
signoff  (I) Signoff object
resource_pool  (O) Resource pool associated with the signoff object

EPM_API int EPM_ask_task_reviewers_group_member ( const tag_t  task_tag,
int *  group_member_count,
tag_t **  group_members 
)

This method will only return GroupMember assignments and will not return ResourcePool assignments as they have no user tag. It is intended for functionality that needs to skip the ResourcePool signoff assignments, such as mail notification. The safer alternative is to get the Signoff object attachments via the EPM_ask_attachments found in epm.h and then ask each Signoff object returned, what type it is via the EPM_ask_signoff_member found in signoff.h. That way you know whether the reviewer is a GroupMember or ResourcePool and make the appropriate subsequent calls.

Parameters:
task_tag  (I) Workflow task
group_member_count  (O) Count of group members associated as signoffs for the task
group_members  (OF) group_member_count Group members associated as signoffs for the task

EPM_API int EPM_ask_task_reviewers_resource_pool ( const tag_t  task_tag,
int *  res_pool_count,
tag_t **  res_pool_tags 
)

This method will only return ResourcePool assignments and will not return GroupMembers assignments. The safer alternative is to get the Signoff object attachments via the EPM_ask_attachments found in epm.h and then ask each Signoff object returned, what type it is via the EPM_ask_signoff_member found in signoff.h. That way you know whether the reviewer is a GroupMember or ResourcePool and make the appropriate subsequent calls.

Parameters:
task_tag  (I) Workflow task
res_pool_count  (O) Count of resource pools associated as signoffs for the task
res_pool_tags  (OF) res_pool_count Resource pools associated as signoffs for the task

EPM_API int EPM_ask_task_reviewers_users ( const tag_t  task_tag,
int *  user_count,
tag_t **  users 
)

This method will only return GroupMember assignment's user tags and will not return ResourcePool assignments as they have no user tag. It is intended for functionality that needs to skip the ResourcePool signoff assignments, such as mail notification. The safer alternative is to get the Signoff object attachments via the EPM_ask_attachments found in epm.h and then ask each Signoff object returned, what type it is via the EPM_ask_signoff_member found in signoff.h. That way you know whether the reviewer is a GroupMember or ResourcePool and make the appropriate subsequent calls.

Parameters:
task_tag  (I) Workflow task
user_count  (O) Count of users associated as signoffs for the task
users  (OF) user_count Users associated as signoffs for the task

EPM_API int EPM_ask_task_undecided_reviewers_users ( const tag_t  task_tag,
int *  user_count,
tag_t **  users 
)

This method will only return GroupMember assignment's user tags and will not return ResourcePool assignments as they have no user tag. It is intended for functionality that needs to skip the ResourcePool signoff assignments, such as mail notification. The safer alternative is to get the Signoff object attachments via the EPM_ask_attachments found in epm.h and then ask each Signoff object returned, what type it is via the EPM_ask_signoff_member found in signoff.h. That way you know whether the reviewer is a GroupMember or ResourcePool and make the appropriate subsequent calls.

Parameters:
task_tag  (I) Workflow task
user_count  (O) Count of users associated with undecided signoffs for the task
users  (OF) user_count Users associated with undecided signoffs for the task

EPM_API int EPM_ask_unassigned_reviewer_types ( tag_t  task_tag,
int *  count,
tag_t **  unassigned_accessors 
)

This method returns unassigned accessors for the task

Parameters:
task_tag  (I) Workflow task
count  (O) Count of unassigned accessors
unassigned_accessors  (OF) count Unassigned accessors

EPM_API int EPM_compare_role_and_group ( tag_t  signoff,
logical match 
)

Check if the signoff objects group/role matches current logged in group/role

Parameters:
signoff  (I) Signoff object
match  (O) true if current group/role matches signoff's group/role

EPM_API int EPM_create_adhoc_signoff ( tag_t  task,
tag_t  member,
int *  count,
tag_t **  signoffs 
)

Creates new adhoc signoffs for a task, given the task tag, a member tag (can be a groupmember tag, or a resourcepool tag or an aliastlist tag) as inputs. This function deals with "Adhoc Signoff" when EPM_create_profile_signoff deals with "Profile Signoffs". These 2 new functions will replace the EPM_create_signoff in V7.0.2.

Parameters:
task  (I) The Select Signoff task tag
member  (I) The groupmember tag or resourcepool tag or aliaslist tag
count  (O) The number of signoffs created (can be 0 to any number, depend on the memberTag)
signoffs  (OF) count The array of new signoff tags

EPM_API int EPM_create_profile_signoff ( tag_t  task,
tag_t  member,
tag_t  signoffProfile,
tag_t signoff 
)

Creates a new signoff for a task, given the task tag, groupmember or resourcepool tag, signoff profile as inputs. This function deals with "Profile Signoff" when EPM_create_adhoc_signoff deals with "Adhoc Signoffs". These 2 new functions will replace the EPM_create_signoff in V7.0.2.

Parameters:
task  (I) The Select Signoff task tag
member  (I) Groupmember tag or resourcepool tag
signoffProfile  (I) Suggest the signoff profile it satisfies by passing an appropriate Signoff Profile tag
signoff  (O) The new signoff tag

EPM_API int EPM_create_signoff ( tag_t  member,
int  originType,
tag_t  originProfile,
tag_t signoff 
)

Creates a new signoff given member, origin type, origin profile as inputs. This function replaces CR_create_signoff that is obsolete in V7.

Parameters:
member  (I) Group member tag
originType  (I) Signoff origin indicating where a Signoff object is derived from
SIGNOFF_ORIGIN_PROFILE 0
SIGNOFF_ORIGIN_ADHOC_USER 1
SIGNOFF_ORIGIN_ADHOC_RESOURCEPOOL 2
SIGNOFF_ORIGIN_ALIASLIST 3
SIGNOFF_ORIGIN_ADHOC_ALL_RESOURCEPOOL 4
originProfile  (I) The object that the signoff is created from. Can be NULL.
signoff  (O) New signoff tag

EPM_API int EPM_delegate_signoff ( tag_t  signoff,
tag_t  new_group_member_to_delegate_to,
logical  add_audit 
)

Parameters:
signoff  (I) Signoff
new_group_member_to_delegate_to  (I) New signoff delegate
add_audit  (I) Update audit if true

EPM_API int EPM_initialize_signoff ( tag_t  signoff,
tag_t  group_member 
)

Initializes the signoff attributes for a newly created instance of a subclass of signoff.

Parameters:
signoff  (I) Signoff to be initialized
group_member  (I) Group member associated with the signoff

EPM_API int EPM_remove_signoffs ( tag_t  task_tag,
int  n_groupmembers,
tag_t groupmembers 
)

Removes specified reviewers from the list of reviewers for the given release level of the given release type. If this release level is already started then this must be called before all of the required reviewers have been added.

Parameters:
task_tag  (I) Workflow task
n_groupmembers  (I) Count of group members
groupmembers  (I) Group members whose signoffs are to be removed

EPM_API int EPM_set_secure_signoff_decision ( tag_t  signoff,
CR_signoff_decision_t  decision,
const char  comments[CR_comment_size_c+1],
const char  password[CR_comment_size_c+1] 
)

Deprecated:
This function is deprecated and will be removed from Tc12. In Tc10 onwards, please use the EPM_set_secure_signoff_decision3
Sets the signoff decision and comments for a signoff of a secure review task. The decision value must be CR_approve_decision for approval/authorize, CR_reject_decision for reject or CR_no_decision for no decision. Values are declared in signoff.h.

Restrictions:

The ITK program must have logged into the POM as the user assigned this signoff in order for this function to work.

Parameters:
signoff  (I) The tag of the signoff
decision  (I) Decision associated with the signoff
comments  (I) Comments to be recorded along with the action
password  (I) Password of current user performing the action

EPM_API int EPM_set_secure_signoff_decision2 ( tag_t  signoff,
CR_signoff_decision_t  decision,
const char *  comments,
const char *  password 
)

Deprecated:
This function is deprecated and will be removed from Tc12.1 In Tc10.1 onwards, please use the EPM_set_secure_signoff_decision3
Sets the signoff decision and comments for a signoff of a secure review task. The decision value must be CR_approve_decision for approval/authorize, CR_reject_decision for reject or CR_no_decision for no decision. Values are declared in signoff.h.

Restrictions:

The ITK program must have logged into the POM as the user assigned this signoff in order for this function to work.

Parameters:
signoff  (I) The tag of the signoff
decision  (I) Decision associated with the signoff
comments  (I) Comments to be recorded along with the action
password  (I) Password of current user performing the action

EPM_API int EPM_set_secure_signoff_decision3 ( tag_t  signoff,
EPM_signoff_decision_t  decision,
const char *  comments,
const char *  password 
)

Sets the signoff decision and comments for a signoff of a secure review task. The decision value must be EPM_approve_decision for approval/authorize, EPM_reject_decision for reject or EPM_no_decision for no decision. Values are declared in signoff.h.

Restrictions:

The ITK program must have logged into the POM as the user assigned this signoff in order for this function to work.

Parameters:
signoff  (I) The tag of the signoff
decision  (I) Decision associated with the signoff
comments  (I) Comments to be recorded along with the action
password  (I) Password of current user performing the action

EPM_API int EPM_set_signoff_accessor ( tag_t  signoff,
tag_t  acc 
)

Get accessor for the signoffs

Parameters:
signoff  (I) Signoff
acc  (I) Accessor for the signoff

EPM_API int EPM_set_signoff_decision ( tag_t  signoff,
EPM_signoff_decision_t  decision,
const char *  comments 
)

Sets the signoff decision and comments for a signoff. The decision value must be EPM_approve_decision for approval/authorize, EPM_reject_decision for reject or EPM_no_decision for no decision. Values are declared in signoff.h.

Warning:
We do not recommend using this function since the decision will not be recorded in the audit file. The audit file will be the only record of signoff decisions after the job is deleted.
Restrictions:

The ITK program must have logged into the POM as the owner of this signoff in order for this function to work.

Parameters:
signoff  (I) Signoff
decision  (I) Signoff decision to be set
comments  (I) Signoff comments

EPM_API int EPM_set_signoff_origin_profile ( tag_t  signoff,
tag_t  originProfile 
)

Set the origin profile to the signoff object tag.

Parameters:
signoff  (I) The signoff tag
originProfile  (I) Origin profile tag, the object that the signoff is created from

EPM_API int EPM_signoff_extent ( int *  n_instances,
tag_t **  instances 
)

This function allocates an array of tags and stores in the array all signoffs in the database. The array of tags is pointed to by signoffs. The size of the array is stored in signoff_count. The client is responsible for freeing the array of signoffs. Use MEM_free to free the memory pointed to by signoffs.

Parameters:
n_instances  (O) Number of signoffs
instances  (OF) n_instances Array of signoff tags