3.2.4.2.34.1 Commit (Opnum 11)

The Commit method is implemented as one of the methods for the IFsrmObject interface (section 3.2.4.2.10). This method has the behavior specified in section 3.2.4.2.10.5 with the following additions:

  • If FSRM Base Object.Deleted is set to true for this Non-Persisted Report Job Instance (section 3.2.1.5.1.2), the server MUST remove the Persisted Report Job (section 3.2.1.5.1.1) from the List of Persisted Report Jobs (section 3.2.1.5) that has the same Task name as this Non-Persisted Report Job Instance, if one exists. This removal MUST occur even if other changes were made to the configuration of the Non-Persisted Report Job Instance. If a Persisted Report Job does not exist, removal is not performed and the server MUST return 0. The server MUST return a nonzero error code if removal fails.

  • If FSRM Base Object.Deleted is set to false for this Non-Persisted Report Job Instance, the server MUST perform the following actions:

    • If any Report Job.Reports in this report job have their Report.Deprecated set to true, the server MUST return FSRM_E_REQD_PARAM_MISSING.

    • If the Namespace roots is empty, the server MUST return FSRM_E_REQD_PARAM_MISSING.

    • If the Task name is NULL, the server MUST return FSRM_E_REQD_PARAM_MISSING.

    • If the Report Job.Reports list is empty, the server MUST return FSRM_E_REQD_PARAM_MISSING.

    • If there is a report object in Report Job.Reports that has the same Report.Name as any other report object in the List Of Persisted Report Jobs, the server must return FSRM_E_DUPLICATE_NAME. 

    • If a Persisted Report Job in the List of Persisted Report Jobs exists with the same Report Jobs (section 3.2.1.5.1) Task name as the Non-Persisted Report Job Instance but a different FSRM Base Object.Id, the server MUST return FSRM_E_ALREADY_EXISTS.

  • If a Persisted Report Job in the List of Persisted Report Jobs exists that has the same Task name as this Non-Persisted Report Job Instance, the server MUST update the configuration data of that Persisted Report Job with the configuration data from this instance. The server MUST return a nonzero error code if the update fails. Details on how configuration data for Persisted Report Jobs are updated is given below in this section.

  • If a Persisted Report Job does not exist with the same Task name and with FSRM Base Object.Deleted set to false, the server MUST create a new Persisted Report Job, populate its configuration with the configuration from this Non-Persisted Report Job Instance, and add the new Persisted Report Job to the List of Persisted Report Jobs. The server MUST return a nonzero error code if creation fails. Details on how configuration data for Persisted Report Jobs are updated is given below in this section.

Comparison of the Report Job Task name MUST be case-insensitive.

To update or populate the configuration data from a Non-Persisted Report Job Instance to a Persisted Report Job, the server MUST assign the values of all the properties of the Non-Persisted Report Job Instance to the corresponding properties of the Persisted Report Job. See section 3.2.1.5.1 for the list of Report Job properties.

In addition, the server MUST:

  • Remove each Report in the Report Job.Reports list of the Persisted Report Job.

  • For each Report (the source Report) in the Report Job.Reports list of the Non-Persisted Report Job Instance:

    • Create a new Report (the destination Report).

    • Populate the configuration data from the source Report to the destination Report as explained below.

    • Add the destination Report to the Report Job.Reports list of the Persisted Report Job.

To populate the configuration data from a Report in the Non-Persisted Report Job Instance (the source Report) to the corresponding Report in the Persisted Report Job (the destination Report), the server MUST assign the values of all properties of the source Report to the corresponding properties of the destination Report. See section 3.2.1.5.2 for the list of Report properties.