配置观察文件夹端点 configuring-watched-folder-endpoints

管理员可以配置网络文件夹,称为 观察文件夹,以便当用户将文件(如PDF文件)放入watched文件夹时,将调用配置的服务操作并操作该文件。 服务执行指定的操作后,将修改的文件保存在指定的输出文件夹中。

配置Watched文件夹服务 configuring-the-watched-folder-service

在配置Watched文件夹端点之前,请配置Watched文件夹服务。 观察文件夹服务的配置参数有两个目的:

  • 配置所有观察文件夹端点的通用属性
  • 为所有观察文件夹端点提供默认值

在配置Watched文件夹服务后,您为目标服务添加一个Watched文件夹端点。 添加端点时,可以设置值,例如将文件或文件夹放在配置的Watched Folder服务的输入文件夹中时要调用的服务名称和操作名称。 有关配置Watched Folder服务的详细信息,请参见 观察文件夹服务设置.

正在创建watched文件夹 creating-a-watched-folder

您可以通过以下两种方式创建观察文件夹:

  • 在配置watched文件夹端点的设置时,在“路径”框中键入父目录的完整路径,并附加要创建的watched文件夹的名称,如以下示例所示:
      C:\MyPDFs\MyWatchedFolder由于MyWatchedFolder文件夹尚不存在,因此AEM表单会尝试在该位置创建它。

  • 在配置观察文件夹端点之前,在文件系统上创建文件夹,然后在“路径”框中键入完整路径。

在群集环境中,用作观察文件夹的文件夹必须在文件系统或网络上可访问、可写和共享。 在此方案中,群集的每个应用程序服务器实例都必须具有对同一共享文件夹的访问权限。

在Windows中,如果应用程序服务器作为服务运行,则必须通过以下方式之一以对共享文件夹的适当访问权限启动该服务器:

  • 配置应用程序服务器服务登录身份 参数 以具有共享watched文件夹的相应访问权限的特定用户身份启动。
  • 将应用程序服务器服务Start as Local System选项配置为允许服务与桌面交互。 此选项要求所有人都可以访问和写入共享的受监视文件夹。

将受监视的文件夹链接在一起 chaining-together-watched-folders

可以将观察文件夹链接在一起,以便一个观察文件夹的结果文档是下一个观察文件夹的输入文档。 每个观察文件夹都可以调用不同的服务。 通过以这种方式配置watched文件夹,可以调用多个服务。 例如,一个观察文件夹可以将PDF文件转换为Adobe PostScript®而另一个观察文件夹可以将PostScript文件转换为PDF/A格式。 要实现此目的,只需设置 结果 您第一个端点定义的watched文件夹的文件夹指向 输入 您第二个端点定义的观察文件夹的文件夹。

第一次转换的输出将转到\path\result。 第二次转换的输入是\path\result,第二次转换的输出将转到\path\result\result (或您在第二次转换的结果文件夹框中定义的目录)。

用户如何与watched文件夹交互 how-users-interact-with-watched-folders

对于watched文件夹端点,用户可以通过将输入文件或文件夹从其桌面复制或拖动到watched文件夹来进行调用。 文件将按其到达的顺序进行处理。

对于观察文件夹端点,如果作业只需要一个输入文件,则用户可以将该文件复制到观察文件夹的根目录。

如果作业包含多个输入文件,则用户必须在监视文件夹层次结构之外创建一个包含所有必需文件的文件夹。 此新文件夹应包含输入文件(如果进程需要,还可以选择包含DDX文件)。 构造作业文件夹后,用户将其复制到观察文件夹的输入文件夹中。

NOTE
确保应用程序服务器已删除对watched文件夹中文件的访问权限。 如果AEM Forms在扫描文件后无法从输入文件夹中删除这些文件,则将无限期地调用关联的进程。

观察文件夹输出 watched-folder-output

当输入是一个文件夹并且输出由多个文件组成时,AEM forms会创建一个与输入文件夹同名的输出文件夹,并将输出文件复制到该文件夹中。 当输出包含包含键值对的文档映射(如输出进程的输出)时,将使用该键作为输出文件名。

终结点进程产生的输出文件名不能包含字母、数字和句点(.)以外的字符 文件扩展名之前。 AEM表单将其他字符转换为十六进制值。

客户端应用程序从watched文件夹结果文件夹中选取结果文档。 进程错误记录在watched文件夹失败文件夹中。

观察文件夹的工作方式 how-watched-folder-works

Watched Folder模块包含以下服务:

  • 观察文件夹服务
  • provider.file_scan_service
  • provider.file_write_results_service

除了上面列出的服务之外, Watched Folder还依赖于其他服务,包括用于调度作业的调度程序服务和支持目标服务的异步调用的作业管理器服务。

观察文件夹处理调用请求的方式 how-watched-folder-processes-an-invocation-request

Watched Folder服务处理端点的创建、更新和删除。 管理员创建端点后,调度程序服务会根据指定的重复间隔或cron表达式触发这些端点。

此图说明了Watched文件夹如何处理调用请求。

en_watchedfolder

使用watched文件夹调用服务的过程如下:

  1. 客户端应用程序将文件或文件夹放置在watched文件夹输入文件夹中。

  2. 当作业扫描间隔发生时,调度程序服务将调用provider.file_scan_service来处理输入文件夹中的文件或文件夹。

  3. provider.file_scan_service执行以下任务:

    • 扫描输入文件夹以查找与包含文件模式匹配的文件或文件夹,并根据指定的排除文件模式排除文件或文件夹。 最早的文件或文件夹首先被接收。 等待时间之前的文件和文件夹也会被接收。 在一次扫描中,处理的文件或文件夹的数量基于批次大小。 有关文件模式的信息,请参见 关于文件模式. 有关设置批次大小的信息,请参见 观察文件夹服务设置.
    • 选取要处理的文件或文件夹。 如果文件或文件夹未完全下载,则会在下次扫描时拾取它们。 为确保文件夹完全下载,管理员应使用“排除文件”模式创建一个名为的文件夹。 文件夹包含所有文件后,必须将其重命名为包含文件模式中指定的模式。 此步骤可确保文件夹具有调用服务所需的所有必要文件。 有关确保文件夹完全下载的更多信息,请参阅 监视文件夹的提示和技巧.
    • 选择文件或文件夹进行处理后,将其移动到暂存文件夹。
    • 根据端点输入参数映射,将stage文件夹中的文件或文件夹转换为相应的输入。 有关输入参数映射的示例,请参见 监视文件夹的提示和技巧.
  4. 同步或异步调用为端点配置的目标服务。 使用为端点配置的用户名和密码调用目标服务。

    • 同步调用直接调用目标服务并立即处理响应。
    • 对于异步调用,将通过Job Manager服务调用目标服务,该服务将请求置于队列中。 作业管理器服务依次调用provider.file_write_results_service来处理结果。
  5. provider.file_write_results_service可处理目标服务调用的响应或失败。 成功后,将根据端点配置将输出保存到结果文件夹。 如果终结点配置为在成功完成时保留结果,则provider.file_write_results_service也会保留源。

    如果调用目标服务导致失败,provider.file_write_results_service会将失败的原因记录在failure.log文件中,并将该文件放置在failure文件夹中。 根据为端点指定的配置参数创建失败文件夹。 当管理员为终结点配置设置“失败时保留”选项时,provider.file_write_results_service还会将源文件复制到失败文件夹中。 有关从故障文件夹恢复文件的信息,请参见 故障点和恢复.

观察文件夹终结点设置 watched-folder-endpoint-settings

使用以下设置配置观察文件夹端点。

名称: (必需)标识端点。 不要包含<字符,因为它将截断工作区中显示的名称。 如果您输入URL作为端点的名称,请确保它符合RFC1738中指定的语法规则。

描述: 端点的描述。 不要包含<字符,因为它将截断工作区中显示的描述。

路径: (必需)指定watched文件夹位置。 在群集环境中,此设置必须指向可从群集中的每台计算机访问的共享网络文件夹。

异步: 将调用类型标识为异步或同步。 默认值为asynchronous。 建议对长生命周期进程使用异步,对瞬态或短生命周期进程使用同步。

Cron表达式: 如果必须使用cron表达式来安排watched文件夹,请输入cron表达式。 配置此设置时,将忽略“重复间隔”。

重复间隔: 扫描观察文件夹以输入的时间间隔(以秒为单位)。 除非启用“限制”设置,否则“重复间隔”应大于处理平均作业的时间;否则,系统可能会过载。 默认值为 5。有关其他信息,请参阅批量大小的说明。

重复计数: 观察文件夹扫描文件夹或目录的次数。 值–1表示无限扫描。 默认值为 -1。

限制: 如果选择该选项,它会限制AEM在任何给定时间处理受监视文件夹作业的数量。 最大作业数由“批次大小”值决定。 (请参阅关于限制。)

用户名: (必需)从watched文件夹调用目标服务时使用的用户名。 默认值为SuperAdmin。

域名: (必需)用户的域。 默认值为DefaultDom。

批次大小: 每次扫描要提取的文件或文件夹数。 用于防止系统过载;一次扫描太多文件可能会导致崩溃。 默认值为 2。

“重复间隔”和“批次大小”设置确定每次扫描中观察文件夹选取的文件数。 观察文件夹使用Quartz线程池扫描输入文件夹。 线程池与其他服务共享。 如果扫描间隔很小,则线程将经常扫描输入文件夹。 如果文件经常被放入观察文件夹,则应该保持较小的扫描间隔。 如果文件不经常被丢弃,请使用较大的扫描间隔,以便其他服务可以使用线程。

如果正在删除大量文件,请使批次大小变大。 例如,如果监视文件夹端点调用的服务每分钟可以处理700个文件,并且用户以相同的速率将文件放入输入文件夹,则将“批处理大小”设置为350,将“重复间隔”设置为30秒将有助于提高监视文件夹的性能,而不会产生过于频繁地扫描监视文件夹的成本。

当文件被拖放到watched文件夹中时,它会列出输入中的文件,如果每秒都进行扫描,则可能会降低性能。 增加扫描间隔可以提高性能。 如果正在删除的文件量很小,请相应地调整“批次大小”和“重复间隔”。 例如,如果每秒删除10个文件,请尝试将“重复间隔”设置为1秒,并将“批次大小”设置为10。

等待时间: 创建文件夹或文件后等待扫描的时间(以毫秒为单位)。 例如,如果等待时间为3,600,000毫秒(1小时),文件是在一分钟前创建的,则将在59分钟或更长时间后提取此文件。 默认值为 0。

此设置对于确保将文件或文件夹完全复制到输入文件夹非常有用。 例如,如果处理的文件很大,且下载文件需要10分钟,则将等待时间设置为10&ast;60 &ast;1000毫秒。 这样可以防止观察文件夹在文件未满十分钟时扫描文件。

排除文件模式: 分号 观察文件夹用来确定要扫描和选取的文件和文件夹的分隔模式列表。 将不会扫描任何具有此模式的文件或文件夹以进行处理。

当输入是具有多个文件的文件夹时,此设置很有用。 文件夹的内容可以复制到一个名称为的文件夹中,该名称将被监视文件夹提取。 这可以防止观察文件夹在将该文件夹完全复制到输入文件夹之前拾取要处理的文件夹。

您可以使用文件模式来排除:

  • 具有特定文件扩展名的文件;例如,&ast;.dat、&ast;.xml、&ast;.pdf。

  • 具有特定名称的文件;例如,数据。&ast;将排除名为的文件和文件夹 数据1数据2,等等。

  • 名称和扩展名中包含复合表达式的文件,如以下示例所示:

    • 数据[0-9][0-9][0-9].[分日][aA]'端口'
    • &ast;。[分日][Aa]'端口'
    • &ast;。[Xx][Mm][Ll]

有关文件模式的详细信息,请参见 关于文件模式.

包含文件模式: (必需)分号 观察文件夹用来确定要扫描和选取的文件夹和文件的模式分隔列表。 例如,如果“包含文件模式”是input&ast;,则选取与input&ast;匹配的所有文件和文件夹。 这包括名为input1、input2等的文件和文件夹。

默认值为&ast;,表示所有文件和文件夹。

您可以使用文件模式来包括:

  • 具有特定文件扩展名的文件;例如,&ast;.dat、&ast;.xml、&ast;.pdf。

  • 具有特定名称的文件;例如,数据。&ast;将包含名为的文件和文件夹 数据1数据2,等等。

  • 名称和扩展名中包含复合表达式的文件,如以下示例所示:

    • 数据[0-9][0-9][0-9].[分日][aA]'端口'
    • &ast;。[分日][Aa]'端口'
    • &ast;。[Xx][Mm][Ll]

有关文件模式的详细信息,请参见 关于文件模式.

结果文件夹: 存储所保存结果的文件夹。 如果结果未出现在此文件夹中,请检查失败文件夹。 只读文件不会得到处理,将保存在故障文件夹中。 此值可以是具有以下文件模式的绝对路径或相对路径:

  • %F =文件名前缀
  • %E =文件扩展名
  • %Y =年(完整)
  • %y =年(最后两位数)
  • %M =月
  • %D =日期
  • %d =年中的日
  • %H =小时(24小时制)
  • %h =小时(12小时制)
  • %m =分钟
  • %s =秒
  • %l =毫秒
  • %R =随机数(介于0-9之间)
  • %P =进程或作业标识

例如,如果是2009年7月17日晚上8点,并且您指定 C:/Test/WF0/failure/%Y/%M/%D/%H/,结果文件夹为 C:/Test/WF0/failure/2009/07/17/20.

如果路径不是绝对路径而是相对路径,则将在观察文件夹内创建该文件夹。 默认值为result/%Y/%M/%D/,它是watched文件夹内的Result文件夹。 有关文件模式的详细信息,请参见 关于文件模式.

NOTE
结果文件夹的大小越小, Watched文件夹的性能就越好。 例如,如果观察文件夹的预计负载为每小时1000个文件,请尝试以下模式 result/%Y%M%D%H 以便每小时创建一个新的子文件夹。 如果负载较小(例如,每天1000个文件),则可以使用以下模式 result/%Y%M%D.

保留文件夹: 成功扫描和提取后存储文件的位置。 路径可以是绝对、相对或空目录路径。 您可以使用文件模式,如“结果文件夹”中所述。 默认值为preserve/%Y/%M/%D/。

失败文件夹: 保存失败文件的文件夹。 此位置始终相对于观察文件夹。 您可以使用文件模式,如“结果文件夹”中所述。

只读文件不会得到处理,将保存在故障文件夹中。

默认值为失败/%Y/%M/%D/。

失败时保留: 如果对服务运行操作失败,则保留输入文件。 默认值为true。

覆盖重复的文件名: 当设置为True时,将覆盖结果文件夹和保留文件夹中的文件。 当设置为False时,使用具有数字索引后缀的文件和文件夹作为名称。 默认值为False。

清除持续时间: (必需)当结果文件夹中的文件和文件夹早于此值时会将其清除。 此值以天为单位。 此设置有助于确保结果文件夹不会变满。

值为–1天表示从不删除结果文件夹。 默认值为 -1。

操作名称: (必需)可分配给观察文件夹端点的操作列表。

输入参数映射: 用于配置处理服务和操作所需的输入。 可用的设置取决于使用观察文件夹端点的服务。 以下是两种类型的输入:

文本: 观察文件夹使用在显示的字段中输入的值。 支持所有基本Java类型。 例如,如果API使用字符串、long、int和Boolean等输入,则字符串将转换为正确类型并调用服务。

变量: 输入的值是watched文件夹用来选取输入的文件模式。 例如,如果存在加密密码服务,其中输入文档必须是PDF文件,则用户可以使用&ast;.pdf作为文件模式。 观察文件夹将拾取观察文件夹中与此模式匹配的所有文件,并为每个文件调用服务。 使用变量时,所有输入文件都会转换为文档。 仅支持使用文档作为输入类型的API。

输出参数映射: 用于配置服务和操作的输出。 可用的设置取决于使用观察文件夹端点的服务。

观察文件夹输出可以是单个文档、文档列表或文档地图。 然后,使用“输出参数映射”中指定的模式将这些输出文档保存在结果文件夹中。

NOTE
指定导致唯一输出文件名的名称可以提高性能。 例如,考虑服务返回一个输出文档,“输出参数映射”将其映射到的情况 %F.%E (输入文件的文件名和扩展名)。 在这种情况下,如果用户每分钟删除一次同名文件,并且结果文件夹配置为 result/%Y/%M/%D,且“覆盖重复的文件名”设置已关闭,“观察文件夹”将尝试解析重复的文件名。 解析重复文件名的过程可能会影响性能。 在这种情况下,将输出参数映射更改为 %F_%h_%m_%s_%l 将小时、分钟、秒和毫秒添加到名称,或确保删除的文件具有唯一名称可以提高性能。

关于文件模式 about-file-patterns

管理员可以指定可以调用服务的文件类型。 可以为每个观察文件夹建立多个文件模式。 文件模式可以是以下文件属性之一:

  • 具有特定文件扩展名的文件。 例如,&ast;.dat、&ast;.xml、&ast;.pdf

  • 具有特定名称的文件。 例如,数据。&ast;

  • 名称和扩展名中包含复合表达式的文件,如以下示例所示:

    • 数据[0-9][0-9][0-9].[分日][aA]'端口'
    • &ast;。[分日][Aa]'端口'
    • &ast;。[Xx][Mm][Ll]

管理员可以定义用于存储结果的输出文件夹的文件模式。 对于输出文件夹(“结果”、“保留”和“失败”),管理员可以指定以下任何文件模式:

  • %Y =年(完整)
  • %y =年(最后两位数)
  • %M =月,
  • %D =日期,
  • %d =一年中的第几天,
  • %h =小时,
  • %m =分钟,
  • %s =秒,
  • %R =介于0-9之间的随机数
  • %J =作业名称

例如,结果文件夹的路径可以是 C:\Adobe\Adobe_Experience_Manager_forms\BarcodedForms\%y\%m\%d.

输出参数映射还可以指定其他模式,例如:

  • %F =源文件名
  • %E =源文件扩展名

如果输出参数映射模式以“File.separator”(路径分隔符)结尾,则会创建一个文件夹,并将内容复制到该文件夹中。 如果模式不以“File.separator”结尾,则会使用该名称创建内容(结果文件或文件夹)。 有关输出参数映射的详细信息,请参见 监视文件夹的提示和技巧.

关于限制 about-throttling

为监视文件夹端点启用限制时,它会限制可在任意给定时间处理的监视文件夹作业的数量。 最大作业数由批处理大小值决定,该值也可以在Watched文件夹端点中配置。 当达到限制限制时,将不会轮询观察文件夹输入目录中的传入文档。 文档还将保留在输入目录中,直到其他观察的文件夹作业完成并再次尝试轮询为止。 如果存在同步处理,则单个轮询中处理的所有作业都将计入限制限制,即使这些作业在单个线程中连续处理也是如此。

NOTE
限制无法随群集扩展。 启用限制后,群集作为一个整体不会在任何给定时间处理超过批量大小中指定的作业数。 此限制在群集范围之内,并非特定于群集中的每个节点。 例如,当批处理大小为2时,单个节点处理两个作业即可达到限制限制,并且在一个作业完成之前,没有其他节点会轮询输入目录。

限制的工作方式 how-throttling-works

“观察文件夹”在每个重复间隔扫描输入文件夹,选取在“批处理大小”中指定的文件数,并为每个文件调用目标服务。 例如,如果批次大小为4,则每次扫描时,Watched Folder将选取四个文件,创建四个调用请求,并调用目标服务。 在完成这些请求之前,如果调用Watched Folder,则无论前四个作业是否完成,都将再次启动四个作业。

限制功能可防止Watched文件夹在前面的作业未完成时调用新作业。 观察文件夹将检测正在进行的作业,并根据批处理大小减去正在进行的作业来处理新作业。 例如,在第二次调用中,如果完成的作业数只有三个,并且一个作业仍在进行中,则Watched Folder将仅调用另外三个作业。

  • 观察文件夹依赖于暂存文件夹中的文件数,以确定正在进行多少个作业。 如果文件在stage文件夹中保持未处理状态,则Watched Folder将不再调用任何作业。 例如,如果批次大小为4且三个作业已停止,则Watched Folder将在后续调用中仅调用一个作业。 有多个情况可能会导致文件在stage文件夹中保持未处理状态。 当作业停止时,管理员可以在forms workflow administration页面上终止进程,以便Watched Folder将文件移出stage文件夹。
  • 如果Forms服务器在Watched Folder调用作业之前关闭,管理员可以将文件移出stage文件夹。 有关信息,请参阅 故障点和恢复.
  • 如果Forms服务器正在运行,但在作业管理器服务回调时监视文件夹未运行(当服务未按顺序启动时会发生回调),则管理员可以将文件移出暂存文件夹。 有关信息,请参阅 故障点和恢复.

性能和可扩展性 performance-and-scalability

“观察文件夹”可以在单个节点上提供总计100个文件夹。 Watched文件夹的性能取决于Forms服务器的性能。 对于异步调用,性能更取决于系统负载和作业管理器队列中的作业。

通过向群集添加节点,可以改进观察文件夹的性能。 监视文件夹作业通过Quartz调度程序跨群集节点分发,如果有异步请求,则通过Job Manager服务分发。 所有作业都保留在数据库中。

监视文件夹依赖调度程序服务来计划、取消计划和重新计划作业。 其他服务(如事件管理服务、用户管理器服务和电子邮件提供商服务)共享调度程序服务线程池。 这会影响Watched文件夹性能。 当所有服务都开始使用调度程序服务线程池时,需要对其进行调整。

群集中的观察文件夹 watched-folders-in-a-cluster

在群集中, Watched Folder依赖于Quartz计划程序和Job Manager服务来实现负载平衡和故障转移。 有关Quartz群集行为的详细信息,请参见 Quartz文档.

观察文件夹在每次轮询时执行以下三项主要任务:

  • 扫描文件夹
  • 调用目标服务
  • 处理结果

负载平衡和故障转移行为会根据是否将观察文件夹配置为同步调用或异步调用而发生更改。

群集中的同步观察文件夹 synchronous-watched-folder-in-a-cluster

对于同步调用,由Quartz负载均衡器决定哪个节点将获得轮询事件。 获取轮询事件的节点将执行所有任务:扫描文件夹、调用目标服务以及处理结果。

en_synchwatchedfoldercluster

对于同步调用,当一个节点失败时,Quartz调度程序会向其他节点发送新的轮询事件。 在失败节点上启动的调用将丢失。 有关如何恢复与失败作业关联的文件的详细信息,请参见 故障点和恢复.

群集中的异步观察文件夹 asynchronous-watched-folder-in-a-cluster

对于异步调用,Quartz负载平衡器决定哪个节点将获得轮询事件。 获取轮询事件的节点将扫描输入文件夹,并通过将请求置于作业管理器服务队列中来调用目标服务。 作业管理器服务负载平衡器依次负责决定哪个节点将处理调用请求。 即使节点A创建了调用请求,节点B最终还是会处理该请求。 或者,启动调用请求的节点可能最终也会处理该请求。

en_asynchwatchedfoldercluster

对于异步调用,当一个节点失败时,Quartz计划程序会向其他节点发送新的轮询事件。 在失败节点上创建的调用请求将位于作业管理器服务队列中,并将发送到其他节点进行处理。 未创建调用请求的文件将保留在stage文件夹中。 有关如何恢复与失败作业关联的文件的详细信息,请参见 故障点和恢复.

故障点和恢复 failure-points-and-recovery

在每个轮询事件中, Watched Folder锁定输入文件夹,将匹配包含文件模式的文件移到stage文件夹,然后解除锁定输入文件夹。 需要锁定,这样两个线程就不会拾取同一组文件并对其进行两次处理。 当重复间隔较小且批次较大时,发生此情况的几率会增加。 将文件移到stage文件夹后,输入文件夹将被解锁,以便其他线程可以扫描该文件夹。 此步骤有助于提供高吞吐量,因为其他线程可以在一个线程处理文件时进行扫描。

将文件移到stage文件夹后,将为每个文件创建调用请求,并调用目标服务。 在Watched Folder无法恢复stage文件夹中的文件的情况下:

  • 如果服务器在Watched Folder创建调用请求之前关闭,则舞台文件夹中的文件将保留在stage文件夹中,并且不会恢复。
  • 如果Watched Folder已成功为stage文件夹中的每个文件创建调用请求,并且服务器崩溃,则根据调用类型有两种行为:

同步: 如果Watched文件夹配置为同步调用服务,则stage文件夹中的所有文件在stage文件夹中保持未处理状态。

异步: 在这种情况下, Watched文件夹依赖作业管理器服务。 如果作业管理器服务回调Watched文件夹,则根据调用的结果,会将暂存文件夹中的文件移到preserve或failure文件夹。 如果作业管理器服务没有回调“观察文件夹”,则文件在stage文件夹中将保持未处理状态。 当作业管理器回拨时,Watched文件夹未运行,会发生这种情况。

正在恢复stage文件夹中未处理的源文件 recovering-unprocessed-source-files-in-the-stage-folder

当观察文件夹无法处理暂存文件夹中的源文件时,您可以恢复未处理的文件。

  1. 重新启动应用程序服务器或节点。

  2. (可选)停止Watched文件夹处理新输入文件。 如果跳过此步骤,将更难确定哪些文件在stage文件夹中未处理。 要阻止Watched Folder处理新的输入文件,请执行以下任务之一:

    • 在“应用程序和服务”中,将watched文件夹端点的Include File Pattern参数更改为与任何新输入文件都不匹配的参数(例如,输入 NOMATCH)。
    • 暂停正在创建新输入文件的进程。

    等待AEM表单恢复并处理所有文件。 大多数文件应恢复,任何新输入文件都应正确处理。 您等待观察文件夹恢复和处理文件的时间长短将取决于要调用的操作的长度和要恢复的文件数。

  3. 确定无法处理哪些文件。 如果等待了适当的时间并且已完成上一步,并且暂存文件夹中仍存在未处理的文件,请转到下一步。

    note note
    NOTE
    您可以在暂存目录中查看文件的日期和时间戳。 根据文件数和正常处理时间,您可以确定哪些文件的年龄足以被视为卡住。
  4. 将未处理的文件从stage目录复制到输入目录。

  5. 如果在步骤2中阻止Watched Folder处理新的输入文件,请将“Include File Pattern”(包含文件模式)更改为先前的值,或者重新启用已禁用的进程。

观察文件夹的安全注意事项 security-considerations-for-watched-folders

每个观察文件夹都配置了用户名和密码。 调用服务时将使用这些凭据。 监视文件夹依赖于以下事实:共享文件夹受基础安全文件系统的保护,因此只有监视文件夹的所有者才能访问该共享文件夹。

监视文件夹的提示和技巧 tips-and-tricks-for-watched-folders

以下是配置Watched文件夹端点时的一些提示和技巧:

  • 如果在Windows上有处理图像文件的观察文件夹,请为“包括文件模式”或“排除文件模式”选项指定值,以防止Windows自动生成的Thumbs.db文件被观察文件夹轮询。

  • 如果指定了cron表达式,则会忽略重复间隔。 cron表达式的使用基于Quartz开源作业调度系统1.4.0版。

  • 批次大小是每次扫描观察文件夹时将提取的文件或文件夹数。 如果将批处理大小设置为2个,并将10个文件或文件夹放入watched文件夹输入文件夹中,则每次扫描仅会拾取两个。 下次扫描(将在重复间隔中指定的时间之后进行)时,将拾取下两个文件。

  • 对于文件模式,管理员可以指定支持通配符模式的正则表达式,以指定文件模式。 Watched Folder修改正则表达式以支持通配符模式,如&ast;。&ast;或&ast;.pdf。 正则表达式不支持这些通配符模式。

  • 观察文件夹会扫描输入文件夹中的输入,并且在开始处理文件或文件夹之前,不知道源文件或文件夹是否已完全复制到输入文件夹中。 要确保在拾取文件或文件夹之前将源文件或文件夹完全复制到观察文件夹的输入文件夹中,请执行以下任务:

    • 使用等待时间,即观察文件夹从上次修改时间起等待的时间(以毫秒为单位)。 如果要处理大文件,请使用此功能。 例如,如果下载文件需要10分钟,则将等待时间指定为10&ast;60 &ast;1000毫秒。 这将阻止Watched Folder在10分钟之内取回文件。
    • 使用排除文件模式和包含文件模式。 例如,如果排除文件模式为 ex* 并且包含文件模式为 in*,观察文件夹将选取以“in”开头的文件,而不选取以“ex”开头的文件。 要复制大型文件或文件夹,请首先重命名文件或文件夹,使名称以“ex”开头。 将名为“ex”的文件或文件夹完全复制到监视文件夹后,将其重命名为“in&ast;”。
  • 使用清除持续时间保持结果文件夹干净。 观察文件夹会清除所有早于清除持续时间中所述时间的文件。 持续时间以天为单位。

  • 添加Watched Folder端点时,在选择操作名称之后,将填充输入参数映射。 对于操作的每个输入,生成一个输入参数映射字段。 以下是输入参数映射的示例:

    • 对象 com.adobe.idp.Document 输入:如果服务操作的输入类型为 Document,管理员可以将映射类型指定为 Variable. Watched Folder将根据为输入参数指定的文件模式,从观察文件夹的输入文件夹中提取输入。 如果管理员指定 *.pdf 作为参数,将拾取每个扩展名为.pdf的文件,并将其转换为 com.adobe.idp.Document,并调用了服务。
    • 对象 java.util.Map 输入:如果服务操作的输入类型为 Map,管理员可以将映射类型指定为 Variable 并输入带有如下模式的映射值 *.pdf. 例如,服务需要两个映射 com.adobe.idp.Document 表示输入文件夹中两个文件的对象,如1.pdf和2.pdf。 Watched Folder将创建一个映射,其中键作为文件名,值作为 com.adobe.idp.Document.
    • 对象 java.util.List 输入:如果服务操作的输入类型为“列表”,则管理员可以将映射类型指定为 Variable 并输入带有如下模式的映射值 *.pdf. 将PDF文件放入输入文件夹后, Watched Folder将创建 com.adobe.idp.Document 表示这些文件并调用目标服务的对象。
    • 对象 java.lang.String:管理员有两个选项。 首先,管理员可以指定映射类型 Literal 并输入映射值作为字符串,例如 hello. 观察文件夹将使用字符串调用服务 hello. 其次,管理员可以将映射类型指定为 Variable 并输入带有如下模式的映射值 *.txt. 在后一种情况下,将具有.txt扩展名的文件作为文档读取,该文档作为字符串进行强制,以调用该服务。
    • Java基元类型:管理员可以将映射类型指定为 Literal 并提供值。 观察文件夹将使用指定的值调用服务。
  • 观察文件夹用于处理文档。 支持的输出包括 com.adobe.idp.Documentorg.w3c.Documentorg.w3c.Node以及这些类型的列表和地图。 任何其他类型都将导致失败文件夹中的失败输出。

  • 如果结果不在结果文件夹中,请验证失败文件夹以查看是否已发生失败。

  • 在异步模式下使用观察文件夹时效果最佳。 在此模式下, Watched Folder将调用请求放入队列并回调。 然后异步处理队列。 如果未设置Asynchronous选项,Watched Folder将同步调用目标服务,并且Process Engine会等待该服务完成请求并生成结果。 如果目标服务处理请求需要很长时间,观察文件夹可能会出现超时错误。

  • 为导入和导出操作创建watched文件夹不允许提取文件扩展名。 使用watched文件夹调用表单数据集成服务时,输出文件的文件扩展名类型可能与文档对象类型的预期输出格式不匹配。 例如,如果调用导出操作的观察文件夹的输入文件是包含数据的XFA表单,则输出应该是XDP数据文件。 要获得具有正确文件扩展名的输出文件,可以在输出参数映射中指定该文件。 在此示例中,可以使用%F.xdp进行输出参数映射。

  • 观察文件夹可能会先处理输入文件,然后再将其完全复制到文件夹。 文件锁定在UNIX上不是强制性的,因为在Windows上也是如此。 因此,在将文件复制到观察文件夹时,“观察文件夹”可能会将文件移动到暂存位置,而无需等待文件复制完成。 此行为仅导致处理输入文件的一部分。 目前有两种解决方法:

    • 解决方法1

      1. 为“排除文件模式”指定模式,如temp&ast;.ps。
      2. 将以temp开头的文件(例如,temp1.ps)复制到观察文件夹。
      3. 将文件完全复制到watched文件夹后,将该文件重命名为与“包含文件模式”指定的模式对应。 观察文件夹随后将完成的文件移至暂存环境。
    • 解决方法2

      如果您知道将文件复制到观察文件夹所需的最大时间长度,请以秒为单位指定等待时间。 然后,观察文件夹会等待指定的时间长度,然后再将文件移至暂存环境。

      这不是Windows上的文件的问题,因为Windows在一个线程写入时锁定了文件。 但是,这是Windows上的文件夹的问题。 对于文件夹,您必须按照解决方法1中的步骤操作。

  • 如果监视文件夹的“保留文件夹名称”终结点属性设置为null目录路径,则不会按预期清除暂存目录。 该目录仍包含已处理的文件和临时文件夹。

适用于观察文件夹的特定于服务的建议 service-specific-recommendations-for-watched-folders

对于所有服务,您应该调整观察文件夹的批次大小和重复间隔,以便Watched文件夹选取新文件和文件夹进行处理的速率不会超过AEM Forms服务器可以处理的作业速率。 实际使用的参数可能会有所不同,具体取决于配置的观察文件夹数量、使用观察文件夹的服务以及处理器上的作业强度。

生成PDF服务推荐 generate-pdf-service-recommendations

  • “生成PDF”服务一次只能转换以下文件类型的一个文件:Microsoft Word、Microsoft Excel、Microsoft PowerPoint、Microsoft Project、AutoCAD、Adobe Photoshop®、Adobe FrameMaker®和AdobePageMaker®。 这些作业运行时间较长;因此,请确保将批次大小保持在一个较低的设置。 如果群集中有更多节点,请增加重复间隔。
  • 对于PostScript (PS)、Encapsulated PostScript (EPS)和图像文件类型,生成PDF服务可以并行处理多个文件。 您应该根据服务器的容量和群集中的节点数仔细调整会话Bean池大小(它控制将并行进行的转换次数)。 然后,将批处理大小增加到与尝试转换的文件类型的会话Bean池大小相同的数字。 轮询频率应该由集群中的节点数决定;但是,由于生成PDF服务处理此类作业的速度非常快,因此可以将重复间隔配置为低值,如5或10。
  • 虽然“生成PDF”服务一次只能转换一个OpenOffice文件,但转换速度非常快。 上面的PS、EPS和图像转换逻辑也适用于OpenOffice转换。
  • 要在群集中启用均匀负载分配,请将批处理大小保持较低并增加重复间隔。

条形码表单服务推荐 barcoded-forms-service-recommendations

  • 为了在处理条形码表单(小文件)时获得最佳性能,请输入 10 批量大小和 2 对于“重复间隔”。

  • 将许多文件放置到输入文件夹中时,出现隐藏文件错误,调用 thumbs.db 可能会发生。 因此,建议您将include文件的Include File Pattern设置为与为输入变量指定的值相同(例如, *.tiff)。 这会阻止Watched文件夹处理数据库文件。

  • 批量大小值 5 和重复间隔 2 条形码Forms服务通常需要大约0.5秒来处理一个条形码,因此该功能通常就足够了。

  • 观察文件夹不会等待Process Engine完成作业后再选取新文件或文件夹。 它不断扫描观察的文件夹并调用目标服务。 此行为可能会导致引擎过载,从而导致资源问题和超时。 确保使用重复间隔和批次大小来调节Watched Folder输入。 如果存在更多观察文件夹或在端点上启用限制,则可以增加重复间隔并减小批次大小。 有关限制的信息,请参阅 关于限制.

  • 监视文件夹模拟用户名和域名中指定的用户。 如果直接调用或进程持续时间较短,观察文件夹会作为此用户调用服务。 对于长周期进程,将通过System上下文调用该进程。 管理员可以为Watched文件夹设置操作系统策略,以确定允许或拒绝访问哪个用户。

  • 使用文件模式组织结果、失败和保留文件夹。 (请参阅 关于文件模式.)

  • 观察文件夹依赖于Quartz计划程序扫描观察文件夹。 Quartz计划程序有一个线程池来扫描它们。 如果观察文件夹的重复间隔非常短(< 5秒)并且批次大小很大(> 2),则可能会出现争用情况。 出现这种情况时,两个Quartz线程会拾取一个文件:

    • 其中一个线程成功找到文件并使用文件调用目标服务。
    • 第二个线程查看文件,但在尝试查找文件是否有效时失败(读取或写入文件),这会导致错误失败,指示文件由于只读而无法处理。 这种情况仅在重复间隔较小且批次大小较大时发生。
recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2