    //@include lib_Class.js

    /**
     * Contains the EP export functions used by the Rule
     *
     * @author ELO Digital Office GmbH
     * @version 1.0
     *
     * @requires sol.common.FileUtils
     *
     * @eloas
     *
     */
    sol.define("sol.common.as.functions.BatchExport", {
      extend: "sol.common.as.FunctionBase",

      /**
       * @cfg objIds
       * Object IDs
       */

      /**
       * @cfg objIds
       * Object IDs
       */

      /**
       * @cfg exportConfigObjId
       * Export configuration object ID
       */

      /**
       * ERP export
       * @returns {String} result Result
       */
      process: function () {
        var me = this,
            tplSords = [],
            logger, tplSord, i, sord, sords,
            nameTpl, data, name, contentTpl, firstDocChildSord, content, dstFilePath, result;

        logger = sol.create("sol.Logger", { scope: this.$className });
        logger.enter("process");

        if (!me.objIds) {
          throw "Object IDs are empty";
        }

        if (!me.exportConfigObjId) {
          throw "Export configuration object ID is empty";
        }

        me.exportConfig = sol.create("sol.common.Config", { compose: me.exportConfigObjId }).config;

        me.tplObjId = me.exportConfig.tplObjId;

        if (!me.tplObjId) {
          throw "Template object ID is empty";
        }

        me.nameTplString = me.exportConfig.nameTplString || "Export_{{{formatDate 'YYYYMMDDHHmmss'}}}";

        me.dstDirPath = me.exportConfig.dstDirPath;

        if (!sol.common.FileUtils.exists(me.dstDirPath)) {
          logger.warn(["Destination directory '{0}' doesn't exist.", me.dstDirPath]);
          me.dstDirPath = sol.common.FileUtils.getTempDirPath();
        }

        me.extension = me.exportConfig.extension || "csv";
        me.encoding = me.exportConfig.encoding || "UTF-8";

        sords = sol.common.RepoUtils.getSords(me.objIds);
        for (i = 0; i < sords.length; i++) {
          sord = sords[i];
          tplSord = sol.common.SordUtils.getTemplateSord(sord).sord;

          if (sol.common.SordUtils.isFolder(sord)) {
            tplSord = tplSord || {};
            tplSord.firstDocChild = {};
            firstDocChildSord = sol.common.RepoUtils.getFirstChild({ parentId: sord.id, includeFolders: false });
            if (firstDocChildSord) {
              tplSord.firstDocChild.id = firstDocChildSord.id + "";
              tplSord.firstDocChild.guid = firstDocChildSord.guid + "";
            }
          }

          tplSords.push(tplSord);
        }

        data = { sords: tplSords };

        logger.debug(["data={0}", JSON.stringify(data)]);

        nameTpl = sol.create("sol.common.Template", { source: me.nameTplString });
        name = nameTpl.apply(tplSord);

        contentTpl = sol.create("sol.common.Template", { objId: me.tplObjId });
        content = contentTpl.apply(data);

        logger.debug(["content={0}", content]);

        dstFilePath = me.dstDirPath + java.io.File.separator + name + "." + me.extension;

        sol.common.FileUtils.writeStringToFile(dstFilePath, content, { encoding: me.encoding });

        logger.info(["File '{0}' exported.", dstFilePath]);

        result = {
          passOn: true,
          exportFilePath: dstFilePath
        };

        return result;
      }
    });