首页 > DBA, 批处理流程管理 > AppWorx管理指南

AppWorx管理指南

1. AppWorx管理简介

1.1. 总体说明
概述

AppWorx管理的主要职责:

1) 确保AppWorx 基本、代理、RMI服务器和WEB服务器启动和运行

2) 提供帐号给开发人员、分析人员、操作人员、网络管理员和数据库管理员

3) 设置基本选项

4) 定义主机和数据库登录

5) 定义输出设备

6) 管理AppWorx保留记录和报告输出

7) 在开发,测试和生产环境之间迁移AppWorx对象

1.2. 查看用户登录信息和发送广播
使用Connections窗口

注:要查看Connections窗口必须具有DBA角色

路径 View à View Connections

1) 查看用户登录报表

2) 广播一个消息,当前用户和以后登录的用户都可以接收到。

广播消息将持续有效,直到清除它,或停止并重新启动RMI的服务器。当你想清除的广播讯息, 简单地删除文本框内容,并点击 Broadcast按钮。

3) 查看连接AppWorx实例的RMI和代理列表,通过Agent字段可以识别类型:

² 如果为空,则为master

² RMI服务器显示为“RmiServer”

² 其他的都是代理的名字

解读服务器和主体连接信息

路径 View à View Connections à RMI Servers

clip_image002

1) RMI服务器信息

Master显示在表的顶端,会话ID是193662,它对应的RMI服务器具有同样的会话ID。Master的本地代理是PROD1。最后一个字段“Master”只对RMI服务器有效,如果显示为“OK”,显示RMI服务器支持Master。有下列两种情况,需要使用多个RMI服务器支持一个Master:

² 容灾 ,如果主RMI服务器不可用,AppWorx将自动切换到第二台RMI服务器

² 客户负载,如果有大量的客户连接到AppWorx,可能希望有第二台RMI服务器处理用户事务。

双击表中的条目,可以切换RMI服务器是否支持Master。

2) 代理信息

所列代理信息仅供参考。每行提供了一个代理的IP地址,端口号,会话ID,以及最后活动的日期戳。如果存在网络通信的问题,这些信息可能是有用的。那个 Master字段不适用于代理。

1.3. 增加现有的Master到RMI服务器
RMI服务器简介

RMI的服务器是一个向AppWorx Java Java客户端输出信息的进程。一个单一的RMI的服务器可以服务于一个Master,多个RMI的服务器也可以服务于一个Master,或RMI的服务器可以在两个或两个以上的Master共享。你可以通过 Masters.properties给RMI服务器增加Masters。此文件位于已安装RMI的服务器的data 目录。而通过RmiServer的 Config窗口,您可以给RMI的服务器分配master而无需停止RMI的服务器。

增加步骤

路径:View à RmiServer Config à new

clip_image004

字段 描述
Name Master 名称
IP Address IP地址
AWCOMM Port AWCOMM端口,缺省为2136

此数据将写在Masters.properties文件中。

1.4. 翻译语言
翻译语言

路径:View à Translator Editor

可以使用翻译编辑器窗口把字段名称,工具提示和助记符翻译成另一种语言。如果想使用翻译语言,必须设置Options.properties 文件中UserLanguageFiles=true

1) General 允许编辑字段,这个页面包含两个搜索字段,可以搜索待翻译的键,也可以搜索它的值。

2) ToolTip允许编辑AppWorx按钮、图标、显示框的值。

3) Mnemonics可以改变助记的键值,它使用 Ctrl键的键盘导航。使用助记法时,不同的语言经常变化,不要使用通用的字符。不要在同一屏幕上使用重复的助记法 ,否则他们将不是所有的正常工作。

增加新语言文件

路径:View à Translator Editor à Locale 字段

翻译值存储在属性文件中。可以通过Locale字段选择属性文件

缺省的语言文件是Labels.properties,它的位置是:

$AW_HOME/web/classes/com/appworx/client/screen/util/

不能直接编辑Labels.properties文件,如果想增加一个语言文件,请复制Labels.properties并改一个唯一的名字。然后通过Locale字段选择。

要找到正确的扩展名的语言,请按一下Show All按钮。例如,德国的文件名称为Labels_de.properties 。一个国家的具体 版本的语言,创建一个有适当名称的空文件。例如,对于使用法语的加拿大,你将创建一个文件名为Lables_fr_CA.properties。然后只添加条目不同的Label_fr.properties文件。

1.5. 查看分配对象
查看分配对象

路径:View à View Assigned Objects

此窗口将显示对象的名字,它的描述,对象的类型,对角所分配的角色及其他信息。
这些信息主要目的是作为一个故障排除工具。注意:窗口底部的复制按钮。可以用它来复制信息到剪贴板并粘贴。

刷新分配对象

路径:View à Refresh Assigned Objects

如果觉得分配对象的数据过时,可以通过此功能刷新分配对象。

1.6. AppWorx目录结构
目录结构

如想了解AppWorx,重要的是知道AppWorx文件的结构和AppWorx 用于存放诊断文件的位置。以下是AppWorx常用目录位置。注它们位于AW_HOME目录中。

目录 内容
bin AppWorx shell脚本,用于调用AppWorx进程。
c 编译,可执行的代码,用于每个AppWorx进程
cddir 安装文件
data 数据文件,保存AppWorx使用的信息
debug 标记文件,如果打开DEBUG
exec 预定义和客户化的AppWorx shell脚本
export AppWorx Export工具产生的文件
import AppWorx Export工具产生的文件,准备导入AppWorx
install 安装文件
log 日记文件,AppWorx操作过程中产生的.log .err和.debug文件
map 文件匹配目标系统中的对象和导入的对象地图文件有一个。扩展名为.dat
out 运行AppWorx作业产生的输出文件。包括 标准的日志文件和作业产生的输出文件。
pipe 管理文件,用于AppWorx后台进程
run 作业运行时AppWorx产生的pr和pm文件
rte Java运行环境文件
site 用于AppWorx后台管理和客户环境变量
sql 各种SQL脚本,用于排错,安装,报表,测试和培训等
status 显示后台程序状态的文件
tmp 临时文件
web Web访问和配置文件
UNIX主目录文件(Home)

也有一些重要文件在UNIX系统的AppWorx主目录。他们
说明见下表。

目录 内容
.netrc 通用UNIX配置文件,使用于FTP远程登录。这个配置文件可用于运行FTP模块。然而,使用.netrc文件能存在安全问题。您可以为每个FTP主机使用AppWorx登录取代. netrc文件。 AppWorx登录包含加密的用户名和密码 信息。
.profile UNIX 脚本,设置用户环境、目录路径和其他设置
AWFILES.Z AppWorx安装软件的压缩文件
release notes 显示当前Appworx版本新的内容和更新

2. 使用代理

2.1. 代理简介(Agents)
代理简介

一个代理是AppWorx的一个实例 。代理安装在每台作业执行的机器上。代理可以是Master的的本地代理,或远程代理。Master调度和控制作业的执行在所有分配给它的代理。代理组在处于两个或两个以上的机器的代理之间的分配负载。

使用AppWorx Masters和代理,您可以从任何 AppWorx客户端控制多台机器的作业 。AppWorx的Master驻留在一个服务器和通过本地的代理启动本地的作业。远程代理驻留在其他服务器,但从Master接受命令。对于Master/代理关系工作方式, AppWorx代理软件必须
安装在所有需要控制的机器。而AppWorx数据库必须驻留在一台机器中。

clip_image006

AppWorx如何运行作业

当Master认为作业应执行的,就把它提交给一个AppWorx队列中。代理轮询队列。当代理人发现一个作业应该运行后,它从队列中取出信息,并运行作业。当作业完成后,它发送状态息返回给Master。

如何部署Master/代理安装

一个master控制和监控作业在代理中的执行。这使得可以集中控制多台计算机。您可以有任意组合的Master和代理。例如,一个代理向Master报告,它可以包含其他Master。

在确定分配给master的master数量和代理数量,必须考虑机器和网络的可靠性。如果aster机器发生故障, Master的代理中的作业就不会启动。如果Master与一台代理失去网络通信,代理中的作业就不会启动。 然而,如果Master重新运行,或网络通讯得到恢复, AppWorx将在中断点恢复操作。

AppWorx Masters,代理和客户端采用SSL加密传输。

使用代理组

代理组在一台或多台机器的代理之间分配负荷。建立代理组和分配本地和远程代理。您可以当你定义一个模块时,可以指定代理或代理组。 当您给模块指定代理或代理组,是 告诉AppWorx程序的位置和运行的位置。 AppWorx将在代理组中第一个可用的代理中运行该程序。

2.2. 安装远程代理
远程代理简介

一般安装之后,AppWorx创建一个Master和它的本地代理。可以通过在AppWorx中增加代理对象用来增加远程代理,然后运行安装脚本。一个AppWorx远程代理通常用于在不包含Master的机器上运行作业。

在同一个实例中定义多个代理,只需要创建另外的代理对象,使用同样的IP地址和用户名。你只需要在第一次运行代理安装。

clip_image008

定义远程代理

路径:Agents à New

字段 描述
Name 名称最多可以有30个字符。如果在一台机器上安装两个或两个以上的远程代理,不要给他们相同的名称(即使他们服务于不同的Master实例) 。下面是保留字,不能用于Master或代理的名字;All,AWCOMM , AGENTSERVICE , AWAPI ,RMI, RMISERVER ,AGENT, 和MASTER。
Description 描述,限制30字符
IP address IP地址,格式为:nnn.nnn.nnn.nnn,可以使用别名,但必须在Master和代理中都使用别名。
Sleep time 定义多少秒(10..1000)AppWorx将在处理循环之间等待。它也控制多少时间条件被计算。
CPU Limit 定义CPU使用率百分比,在AppWorx将产生不新的作业。当代理达到其CPU的限制,将进入一个CPU WAIT的代理状态。代理中的等待运行的作业也进行CPU WAIT的作业状态。新建的代理默认为80 % ,而升级版本AppWorx代理默认为99 %。你可以看到实际 CPU使用率百分比代理人(ExploreràAgent SummaryàCpu字段)。每个代理及Maste 的CPU使用率大约每分钟更新一次。
Type 显示定义的代理的类型(如ORACLE,SAP等)
Thread schedule 设置并行作业最大数量,它们可以在同一时间运行在所有队列的代理上。编辑Master/本地代理的线程时间表在这一字段
将改变本地代理的设置。 注:可以通过Explorer窗口修改Masters和代理的线程时间表。
Environment Variables 指定一个或多个环境变量作为一个单一的AppWorx对象
OS type 显示操作系统是否使用UNIX,Windows,VMS或OS/400
Output directory 指定代理上运行的模块输出文件目录。当你选择一个操作系统类型时会自动填充一个缺省值。这个 字段最多32个字符。如果在这里输入一个新的目录,必须确认它的存在,并AppWorx对它有读/写权限 。可以使用AppWorx变量。 这个值可以变模块和用户指定的目录覆盖。注意:如果一个输出目录是指定的模块和 用户,用户的输出目录将取代模块设置。
User name 被选定的用户决定Awexe range分配给代理。 确保您的代理被分配到用户有充分Awexe range,,这是1000-9999 。用户分配到一个远程代理需要一个Awexe range的代理用于开始。
Active 如果不选中,代理的状态将是INACTIVE.,待定事务中所有的作业和刚提交的作业将进入History,并处于INACTIVE状态。
Agent debug 如果选中,AppWorx在代理的debug目录创建一个AgentService.debug文件
Use Job Count Load Balancing vs. CPU% 如选中,当代理在代理组中时,代理将考虑在待定事务中作业的数量与它最大的线程和实际CPU使用率负载平衡相比。建议保留此字段不选中。通过CPU使用率基础上的负载平衡,AppWorx 考虑到处理代理机器的所有应用的处理,包括AppWorx之外运行的东西。
安装步骤

1) 定义远程代理对象

2) 创建登录用户

3) 安装AppWorx远程代理软件

4) 开始网络侦听服务(for Windows)

5) 检验安装

其中,2-5步就参考AppWorx安装指南

2.3. 指定输出文件名
在awenv.ini文件中修改输出文件名

可以重命名系统的输出文件和报告的文件名,通过site子目录的awenv.ini文件。使用SYSTEM_OUTPUT_NAME设置命名标准输出文件(程序类型为o的文件来自AppWorx) 。使用REPORT_OUTPUT_NAME设定重命名由一个模块程序运行产生的报告文件(程序类型为b的文件来自AppWorx) 。这些条目可以包括替换变量,代入变量,环境变量。在[default]下设置,如下所示。

For UNIX:

[default]

SYSTEM_OUTPUT_NAME=$AW_HOME/training/out/{jobid}_{module}.txt REPORT_OUTPUT_NAME=b{jobid}_{module}.txt

For Windows:

[default] SYSTEM_OUTPUT_NAME=$AW_HOME/training/out/{jobid}_{module}.txt REPORT_OUTPUT_NAME=b{jobid}_{module}.txt

在输入新的设置之后,停止和重启AgentService进程后将生效。

2.4. 设置Master选项
设置Master选项简介

Master和本地代理AppWorx GUI中作为一个单一的对象。可以使用Master Options页面指定Master的几个选项。

clip_image010

设置时区

Time zone字段显示Master的时区。要改变Master的时区,你必须改变这个值,并从Master的awenv.ini文件中删除TZ设置, 并运行升级。

警告!如果你改变了Master的时区并选择’ No selection ‘ ,任何带时区设置的链 将失去他们的时区设置。

可能有一些作业,要运行在不同的时区的特定的时间。要做到这一点,可以为模块
或链选择指定的Time zone字段。你必须选择Master的时区,这样AppWorx会知道调整其启动时间多少个小时。
设置Master时区的步骤

1) 选择Master的本地代理

2) 通过Time zone字段选择时区

3) 删除awenv.ini文件中的TZ行。如TZ=EST

4) 运行soinstall,并选择3更新。输入正确的时区

5) 检查awenv.ini文件,出现新的设置。如TZ=PRC

指定Master的登录类型

登录中指定的Login type字段是用于模块默认选择 登录标签。有两种:

模块:作业利用模块的登录运行(除非模块定义要求使用用户的登录) 。

用户:作业利用用户的登录运行(除非用户登录定义为” No selection’,使用模块登录)。这个选项常用于用户有不同的数据库视图。

指定LDAP设置

如果Enable LDAP被选中,AppWorx将使用LDAP认证。

字段 描述
Java JNDI Factory class Java JNDI 初始语境类
URL LDAP 服务器的URL
Initial directory LDAP 服务器的初始目录
Search by field 指定哪一个LDAP字段用于用户登录搜索(如:UID和CN)
Authentication mechanism 认证机制,值queryServer引起LDAP查询
SSL Enabled 允许SSL
Keystroke path 设置LDAP按键路径
Keystroke password 指定LDAP铵键密码

如想测试LDAP设置,请点击LDAP连接(Test LDAP Connection)按钮。

AppWorx LDAP解决方案仍在不断完善,想了解最新的LDAP实现信息,请参考AppWorx支持网站。

设置链的Master选项

路径: Master Options à Chains

字段 描述
Insert components into chain’s queue 设置链的组件运行在链选定的队列,而不是模块定义选定的队列。
Use virtual day for chain component days of week 指定链组件日期为虚拟工作日历
Defer schedules on startup 当Master停止时,推迟所有的调度的作业
Don’t Eval passed chain args when INITIALIZED 计算无格式的subvars (即subvars没有登录)分配提示给链中各组件时,而不是运行时处于INITIALIZED状态。保持这个选项未选中确保subvars在初始化时间得到计算,而不是准备时间。

Enclosing Subvar Prompt Values in { }:如果调度的链提示包含在{}中 ,链将传递subvar名称作为一个字符串给它的组件,而不是它的值,无论是否设置此选项。

Evaluating Subvars with Logins in Chain Prompts: 如果一个链 提示值是一个已登录分配给它的subvar,它将不再计算,直到作业执行或执行的条件被计算。

设置Debug的Master选项

路径: Master Options à Debug

字段 描述
Enable full condition debugging 设置全条件调试(方法),在AppWorx客户端打开条件调试与在awenv.ini文件中设置CON|ALL一样,调试代码将写在Master的RmiServer.log文件中。
Enable TRUE condition debugging 只有当条件计算为真时,设置条件调试。
Master Debug 在当前RmiServer.log文件中打开调试
SQL Trace Debug 打开Oracle的SQL跟踪选项-结果保有存在Oracle用户日志的目录。一般不应该这样做,除非得到AppWorx产品支持。
Log Locks Encountered 在表appworx_errors插入一条记录,当A ppWorx试图更新记录,而同样的行在待定事务中被锁。
设置浏览器的Master选项

路径: Master Options à Explorer

字段 描述
Use module max revisions 当你定义一个模块,您可以指定Max # of revisions, AppWorx将保存的最多版本。选择此选项来设定。
Enable event log 创建一个事件日志用于惠普VantagePoint业务应用。
Disable initial predecessor inheritance 禁用前置链接继承。继承作业将有资格准备开始运行,除非其他作业还有前置链接。
Allow deleted status to satisfy SLR 成功自上次运行(SLR)的前置链接类型要求前置自从最后一次作业运行成功。选中此选项,一个删除的前任也满足了要求。
Allow aborted job to block single threaded queue 如果队列有一个线程时间表,它的Max Threads 1,通过该队列,只能同时运行一个作业。当 队列包括最大线程为1的线程时间表,它被称为单线程队列。
如果选中此选项,一个带Stay in Queue on Abort选项的失败作业,留在队列上将占据队列的唯一线程。没有其他的作业允许通过队列运行,直到发生下列其中一种情况:
•失败的作业被删除。
•失败的作业被重置和运行完成。
此选项仅适用于单线程队列。它不允许待定事务中 失败的作业占据一个线程队列中的线程 时间表有一个以上的最大线程。
Enable auditing of backlog changes 增加待定事务中的审计变化到aw_audit_table数据库表。审计数据通过运行AW_PURGE_AUDIT_HISTORY模块清除。
Automatically assign new role objects to themselves 当他们创建的时候,自动分配的新角色对象。
Schedules submitted as a group 当一个作业出现subvar问题时,阻止所有的预定作业。

当这个选项没有选中时,缺省的动作就是弹出例外,但运行所有其他预定的 作业。

设置密码的Master选项

路径: Master Options à Password

字段 描述
Do not require awrun passwords 允许使用不带-z <password> 参数的awrun工具
Disable user after 3 consecutive failed login attempts 当登录AppWorx客户端时,连继三次输入错误的密码时,失效用户
Force password change on new users 强制用户在第一次登录后修改密码
Force password to contain both alpha and numeric characters 强制用户密码包含字母和数字
Require password length of 6 characters 强制用户密码至少包含6个字符
Disable clearing of login passwords on re-login 当通过Re-login重进AppWorx时,在Login窗口记住用户密码
2.5. 启用AppWorx审计
AppWorx审计简介

AppWorx包括一个强大的审计功能。 AppWorx审计监督几个AppWorx对象及其部分的变化。使用AppWorx报告对象查看审计信息。一些AppWorx报告对象是AppWorx发行 ,它们被命名为 AW_AUDIT_ <对象或对象部分> 。例如, AW_AUDIT_CHAIN报告显示链的审计信息。这些报告反映了原始数据,变化,变化日期 和哪个AppWorx用户做了变化。

启用AppWorx审计

如果分配有管理员角色, 会看到一个Audit页面在Agents 编辑窗口。在这里,可以打开AppWorx审计。 AppWorx审计可以让你看到谁编辑了对象。当审计是开启,应该定期调度运行AW_PURGE_AUDIT_HISTORY模块。

Audit页面还显示,第一个对象什么时候更改的,以及已被更改的对象总数。为得到更详细的信息,点击Details按钮。

审计待定事务变化

如想审计待定事务变化,选择Master选项Enable auditing of backlog changes

清理审计表

AW_PURGE_AUDIT_HISTORY 模块用于清理审计表数据。 它包含一个提示,需要保留审计数据多长时间。它同时清理对象和待定事务审计信息,缺省值是60天。如你使用AppWorx 审计功能,你必须设置这个值并为这个模块创建一个调度。

2.6. 指定Master Email设置
设置Email

如想发送通知邮件,必须在master/代理中指定邮件发送人信息。 要指定Master的电子邮件设置,选择master/本地代理的Email页面,然后指定主机,开放 端口,发件人。确定电子邮件设置后,可以给发件人发送测试电子邮件,点击Test按钮。

2.7. 定义代理组
代理组简介

当给代理组提交模块, AppWorx在代理组中第一个可用机器组行它。如果Multi-Execution选项被选中,模块和链 将在分配的代理组的每一个代理中运行。没有Multi-Execution选项的代理组被称为正常代理组。

可以给模块分配代理组,只能给链分配Multi-Execution代理组。

创建代理组步骤

1) 从Agent Groups窗口,点击New

2) 选择Standard代理类型,点击OK

3) 输入代理组名称和描述

4) 如果你想在所有的代理中运行作业,点击Multi-Execution

当通过Multi-Execution代理 组运行模块,链,链的组件时, AppWorx自动创建作业的副本,然后在组中的每个代理中运行。每个作业都出现在待定事务中,这样可以跟踪执行。

5) 给代理组分配一个或多个代理

APPWORX_AGENTS代理组

APPWORX_AGENTS代理组由SODELETE模块使用,应当包含所有的APPWORX代理。

SODELETE删除达到保留日期的或达到最大版本数的输出文件。必须确保SODELETE在所有的AppWorx代理执行。SODELETE是SYSTEM链的一部分。

动态负载平衡算法

负载平衡提供动态的手段,用来平衡一些机器之间的处理负载。AppWorx提供了灵活性的方法来管理负荷分配,以满足几乎所有的站点。

决定代理顺序由下列条件决定:

1) 代理的优先级

2) 代理负载因子乘以CPU利用率的值。如果选中选项Use Job Count Load Balancing vs. CPU%,代理因子 乘以当前代理正在运行的作业的数量超过代理的最大线程数。

3) 代理最后活动的时间信息

分配优先级和负载因子

在给代理组增加代理之后,下一步就要给组中的每一个代理分配优先级和负载因子。路径:Agent Groups à Edit.

Priority: 优先级,代理的优先级,与代理组中的另他代理相比较。Priority字段数值越低,运行作业的优先级越高。

Load factor:负载因子,代理的处理能力,与代理组中的另他代理相比较。Factor字段数值越低,运行作业的处理能力越高。例如,如果机器A有Factor为20,而机器B有机器A的一半处理能力,则机器B的Factor为40。

2.8. 管理系统记录
系统记录简介

SYSTEM链是AppWorx每日管理的关键。它包含两个模块:DELDEFAULT和HISTORY_PURGE。

第一次新安装后,SYSTEM链的开始时间设为00:00。如处理较轻,你可能希望更改这个设置到一个不同的时间。

通常,依赖SYSTEM链处理历史记录和输出记录。然而,你可以单独提交每一个模块去代替链。

删除输出文件

当定义了一个模块,可以设置输出保留的天数。SODELETES模块(别名DELDEFAULT)删除达到保留天数的输出文件。

SODELETE模块也删除AppWorx进程创建的日记文件。缺省地,7天以后,它们被删除。你可以更改这个设置到另一个的天数。更改方法:

awenv.ini 文件 à [default]段 à LOG_RETENTION_DAYS

删除历史记录

HISTORY_PURGE模块删除所有的过期的历史记录,过期天数在模块的参数中指定。缺省是60天。如果你想使用不同的值,可以单独提交HISTORY_PURGE模块。

为了满足SLR的前置链接,数据库中必须有一个参考的前置作业。运行HISTORY_PURGE模块将删除这些参考。大多数情况下,这绝不会是一个严重的,因为历史在前置被检查之前保存多天 。如果这种情况发生,使用条件取代SLR前置。

3. AppWorx进程 (Processes)

3.1. AppWorx进程简介
进程简介

所有AppWorx代理现在都是多线程的Java代理。不再有C代理。awcomm, AgentService 和awapi进程运行在所有代理中。通常情况下, RmiServer进程运行在的主机上。为了确保Master与各种进程安全通信,所有信息都会加密。

要查看AppWorx进程状态,使用awstat命令。

awapi进程

awapi进程为非持久性进程awexe,awprint和awrun 处理事务。它作为awexe和awprint执行事务处理功能的集中器 。它对AgentService保持一个开放的接口以提高响应。

3.2. 启停进程
启停进程简介

使用startso和stopso命令启动和停止AppWorx进程。在启停进程之前,必须设置环境变量。环境变量文件是:$AW_HOME/site/sosite

不带参数的启停命令

不带参数的startso命令启动如下进程:

1) awcomm

2) AgentService(它启动awapi)

3) RmiServer

不带参数的stopso命令是停止AgentService进程

启动进程,但不待定作业

如果想开始AppWorx 进程,但不允许Master执行作业,直到有机会查看待定事务的内容。可以使用如下命令:

startso

stopso master

stopso master命令不会停止任何实际的进程,因为这些要素RmiServer进程上已经完成。它将使master进入停止状态。

启停Apache进程

使用命令apachectl start和apachectl stop来启停Apache 进程。

改写进程启动等待时间

如果进程在规定的时间内没有启动,启动进程将异常中止。可以在awenv.ini文件中改写进程启动等待时间。如果设为0,将使用缺省的时间。缺省的时间为:

Agentservice_wait=60

Awapi_wait=60

Rmiserver_wait=60

Awcomm_wait=10

立即停止进程

使用命令stopso –now <进程名> 来立即停止进程。

3.3. watchworx进程
watchworx进程简介

watchworx进程用于检查并重启AppWorx错误的进程。

AppWorx支持大多数的生产环境没有任何问题。然而,在某些情况下,如网络或数据库的问题频繁发生,或机器和应用是在不断变化, WatchWorx确保AppWorx进程启动和运行。 WatchWorx检查awcomm , AgentService , awapi ,并RmiServer进程。如果这些进程意外退出, WatchWorx将重新启动这一进程。如果一个进程被系统手动停止或业务人员使用stopso命令,Watchworx将不启动这个进程。

注意:重启一个远程代理的AgentService进程可能需要7至10分钟。这取决于watchworx进程的循环周期、网络连接和机器速度。

AppWorx进程每一次休眠周期向watchstatus.log文件写入信息。此文件位于log目录。

在UNIX系统,每次代理安装,WatchWorx作为一个独立进程运行。在Windows,系统中,WatchWorx作为一个服务运行在Master和远程代理机器上。

watchworx环境变量和项

有几个环境变量的影响WatchWorx 进程,它们被设置在awenv.ini文件的[WatchWorx]段。格式为:variable=<value>。

变量 描述 缺省值
initial_sleep WatchWorx等待所有进程的开始的最初的时间 UNIX:120秒

Windows:20秒

watch_sleep WatchWorx进程检查之间的休眠时间 30秒
mult_factor 当一个进程不在存在,WatchWorx比较最新状态更新时间期间和sleep_time * mult_factor 。默认情况下, WatchWorx 的mult_factor等于7 。如果进程睡眠时间等于60 秒, WatchWorx将不会在闲置代理采取行动除非有时间差 超过420秒。由于用户干预的正常关闭,WatchWorx不会重新启动进程。 7
max_cycles max_cycles变量设置WatchWorx将尝试每隔x秒重新启动一进程的次数,每隔x秒钟由min_time_reboot
变量设置。在指定数目的重新启动之后,它会尝试重新启动进程每隔y秒数,y秒由max_time_reboot变量设置。
3
max_time_reboot 重启的最大的等待时间 1800秒
min_time_reboot 重启的最小的等待时间 300秒
watch_wait Stopso命令与startso命令的休眠时间 3秒
watchstatus_file WatchWorx进程状态日记文件,必须是全路径 缺省在log目录的watchstatus.log
进程状态

进程有2种状态:offline和online。

Offline状态显示进程被手动停止,WatchWorx将不会试图重启此类进程。

Online状态显示进程被自动启动,如果在指定的时间间隔内,更新时间戳失败,WatchWorx将试图停止和重启此类进程。

使用WatchWorx.notify发送进程重启通知

WatchWorx允许通过WatchWorx.notify脚本增加活动。每当WatchWorx试图重启AppWorx进程时,WatchWorx.notify脚本将运行。脚本必须放在AppWorx的exec目录。在UNIX中,这个脚本必须有执行权限。

WatchWorx可以传递给脚本三个参数:
•进程名称
•进程类型
•关于WatchWorx的行动一条消息

例:echo “`date`AppWorx process $1 of type $2. WatchWorx message: $3. “|mail [email@address]

WatchWorx进程工作方式

如果所有的进程有规律地写入WatchWorx状态表,WatchWorx休眠60秒,然后继续检查。WatchWorx采取行动的基础是:进程的类型及当前时间和状态表时间的差异。有两个组进程,WatchWorx处理RmiServer进程不同于其他的进程。

对于RmiServer进程

RmiServer状态 进程的PID 时间差异 WatchWorx动作
Online Exists <sleep_time*factor 休眠
>sleep_time*factor 关闭并重启进程
Does not exist 并闭并重启进程
Offline 休眠

对于其他进程

进程状态 时间差异 WatchWorx动作
Online <sleep_time*factor 休眠
>sleep_time*factor 等待一定的秒数mult_start*sleep(缺省为420秒),然后关闭并重启进程
Offline 休眠
3.4. awcomm进程
awcomm进程简介

awcomm进程为一台机器的Masters和代理提供了一个直接服务端口,它保存分配给Master的端口,并提供给客户进程。客户端进程是一个沟通与AppWorx事务处理例程的进程。在一个典型的配置中,每台机器只有一个awcomm进程。

在正常情况下,awcomm不需要被停止,除非你计划删除其AppWorx实例。

启动例程

awcomm进程在第一次执行startso时第一个启动。它从data目录的net_conn.dat读取恢复信息。它处理来自awapi,AgentService和RmiServer进程的请求。在任何时候任何通信发生时该进程需要存在和操作。

侦听端口

缺省地,awcomm进程的侦听端口为2136,AWCOMM_PORT必须在RMI服务器/Master及所有的远程代理中保持一致。如果防火墙,必须开放这个端口的输入和输出通信。检查端口是否被使用,可以用如下语句:netstat -an|grep <port number>。

3.5. AgentService进程
AgentService进程简介

AppWorx内部通信进程是由AgentService进程管理。AgentService进程启动,在端口范围49152-65535查找第一个可用的端口,并登记其awcomm进程的Master信息,以便未来的客户端可直接连接。

配置AgentService

可以在awenv.ini文件中设置如下变量用于配置AgentService

变量 描述
AgentClientPort 远程代理的端口,用于接收Master的数据
AgentServerPort 在Master上的侦听端口,用于AgentService和awapi进程的通信。如果不指定,范围从49152到65535,进程启动时,AppWorx每次指定随机的端口。如果没有防火墙,一般不指定。
AWCOMM_PORT Awcomm进程侦听端口
Master_IP_Address Master的IP地址
M_A_SSL 指定在Master和代理之间是否使用SSL协议
3.6. RmiServer进程
RmiServer进程简介

AppWorx RMIServer用于给AppWorx Java客户端提供信息的进程。它从AgeentService进程得到Oracel数据库的连接信息和从master.set解密登录信息。如果RMI Server不活动,则AppWporx Java客户端不能启动

启动例程

使用 startso rmi启动 Rmi Server例程。它调用Java虚拟机。RMI Server启动并连接到Options.properties文件指定的RMIRegistryPortNumber端口.

连接到awcomm后,RmiServer进程尝试连接到AppWorx数据库。它将不停尝试,直到连接。如果成功的数据库信息是不正确,Rmi Server无法启动。所以RmiServer启动的前提是:

1) awcomm和Master的AgentService必须启动,以得到数据库SID连接信息

2) RMI Server目标数据库的Net8(SQL*Net)必须运行。

有两个配置文件与RMI Server有关:Options.properties和Masters.properties

Options.properties文件的参数与awenv.ini类似,它不使用段分开。如果一个值被设置了两次,则在文件中的最后一次有效。

变量 描述
RMIHostID RMI Server所在机器的IP地址
RMIRegistryPortNumber RMI Server使用的端口
RMIDataPortNumber RMI Server传输数据端口
ServerCodebase UserWorx.jar所在的URL路径
ServerLog 日志地(正常信息和debug信息)
Debug Debug设置,缺省为false
SSL 设置是否使用SSL加密,缺省为on
ExitPage 离开客户端的网页
SQLOPER_HOME AppWorx安装地点(AW_HOME)

Masters.properties为AppWorx Masster提供了端口和IP地址信息

变量 描述
AwCommPort Awcomm端口
<master name> 用于增加Master
RMI Server故障

下列情况可能引起RMI Server出现故障:

1) Net8(SQL*Net)没有运行或数据库连接没有运行

2) Java没有安装或操作系统的补丁不正确。

3) 客户端和RMI Server之间丰存在防火墙问题

4) awenv.ini文件中不正确的变量设置,包括:MasterServerPort, MasterClientPort, DB_SID, DB_IP, DB_PORT。

3.7. awexe进程
awexe进程简介

awexe进程就是所谓的’瘦’客户端。它通过awapi (后端客户端)连接到AgentService进程。该awexe进程只能运行列在awserver_sql.dat和awserver_sqlusr.dat文件中的内容。文件位于AppWorx data目录。变量( AW_HOME ,AGENT,PATH= $ AW_HOME /bin: $PATH)必须设置正确,一个AppWorx用户必须存在相匹配的操作系统的用户, 和用户必须有正确的Awexe Range。 Awexe用于安装,导入和导出,命令行程序,作业启动和完成,以及startso和stopso等。

启动/运行例程

awexe进程提交请求给awapi进程,awapi进程按序提交给AgentService。要看操作系统用户是否可以执行语句,AgentService进程验证操作系统( OS )的用户和awexe命令范围是否是分配给用户的命令范围。如果权限是正确的,语句被执行,结果传递给awapi,后者回传给awexe 。

awexe 范围

当你定义了一个AppWorx用户,你可以通过Awexe Range字段限制用户执行命令的范围。

1000-1999: Used for AppWorx background processes.

2000-2999: Utilities for the general user.

3000-4999: Reserved for consulting.

5000-9999: Used for custom definitions.

awexe故障

下列情况可能引起awexe出现故障:

1) awapi和AgentService进程没有运行

2) 变量设置不正确

3) 命令太长

4) 操作系统用户设置不正确

5) Appworx用户没有权限执行功能。(Awexe Range限制)

6) 操作系统用户在c,bin和exec目录没有读(执行)权限,在pipe目录没有读写权限

4. 作业如何运行

4.1. 作业运行简介
总述

当一个模块被请求或计划运行时,作业开始了。Master启动程序执行,并通知适当的代理。数以千计的个体模块(及相关程序)能够在同一的时间执行。

下图显示的参与处理作业的常规阶段。在递交阶段(向下箭头)设置初始状态,创建运行环境,并传递信息。返回阶段(向上箭头)处理作业输出记录,后期加工,和条件。

Master传递合格的作业到适当的代理。代理通过建立和执行脚本处理这项作业。脚本建立了作业的环境,执行任何运行脚本,并调用程序类型的脚本。

程序类型的脚本调用应用并完成和AppWorx,程序及运行的应用程序之间的联络 。与此同时,Master执行DURIN的条件。

程序执行后,输出(可选)登记。当输出登记时,建立输出文件和运行的作业的连接,并储存在 AppWorx数据库。登记后,在报告作业完成状态前运行扩展。Master执行AFTER条件和移动作业到历史。

clip_image012

阶段条

每个主题包含一个阶段条,它概述了模块的执行每个阶段关键组成部分。箭头指示了执行方向。这是重要的,因为该阶段是双向的,这意味阶段是程序执行之前,期间和之后。想想一个模块的执行看成一系列调用子脚本的脚本,传递参数和输出结果。

clip_image013

4.2. 向Master请求
启动作业的方式

1) 请求窗口

2) 调度的模块和链

3) API调用

Master处理过程

一个作业提交之前, AppWorx Master分析作业的适合运行的特征。特征包括:单独运行,优先级,线程链,冲突,开始时间,队列线程,代理组/负载平衡,代理线程,及代理的可用性。

如果作业适合运行,Master评估所BEFORE条件,并确定这项作业是否可能会运行。下面活动可能会推迟或阻止模块的运行。包括WAIT UNTIL MET, DELAY TASK, RESCHEDULE TASK, SKIP TASK,和 HOLD TASK。

如果条件不排除模块运行,Master找到代理和通知代理。Master更改作业的状态为STARTING。

Master创建两个文件:pm和pr。pm文件创建一个新的环境,调用BODY脚本。pr文件包含每个模块提供的参数。这些可能在程序类型接口脚本或程序中使用。

pr文件

pr文件包含来自模块提示的参数。pr文件的文件名( pr. <seq_no> )通过pm文件在系统环境变量par输出。完整路径名称的文件保存在变量so_par。par文件总是在AW_HOME的run子目录下,可(可选)用于程序或程序类型脚本。

pm和pr文件,在作业执行后,被BODY脚本删除,但与作业有关的所有信息是显示在作业相应的SYSOUT文件中。

设置和输出环境变量

有四种方法可以一个程序设置环境变量和输出它们(使它们有效) 。

1) AppWorx GUI

2) site目录的sosite文件

3) PREFIX运行扩展

4) 程序类型接口脚本

AppWorx在运行时大约定义40个环境变量,并写入到pm文件。如果你在sosite文件中定义了一个环境,如OUTPUT,在运行,它将自动被pm文件覆盖。你可以使用PREFIX脚本或程序类型脚本修改pm中定义的环境变量。

Master处理(从BODY返回后)

Master处理所有的AFTER或者DELETED条件,然后转移作业到历史或者重启它。

这样,整个模块的执行就结束了。

4.3. pm文件
pm文件简介

在Master有代理执行pm脚本前,它直接设置两个环境变量: db_login2和b_password2 。这些都是直接设置,使他们决不存在在操作系统的文件中。代理启动pm文件设置环境和输出环境设置到一个新的环境(设置子-shell的环境)。然后pm文件调用BODY脚本。
pm文件为模块设置环境变量和它的相关子对象(数据库登录,程序类型,输出规格说明)。

通过sosite文件增加或删除环境变量,可以更改AppWorx的环境设置。也可以增加PREFIX脚本去增加,修改或删除环境变量。也包括Oracle指定的变量比如ORACLE_SID,ORACLE_HOME和TWO_TASK。

在多个位置使用seq_no

AppWorx给每一个提交的模块分配一个唯一的作业标识号(job_id)和次序号(seq_no)。job_id用于生成作业输出文件的名字。输出文件被SYSTEM链有规律地删除。pr和pm文件在程序运行完成后被删除(除非启用DEBUG)。如下表所示:

文件名 作用/描述 目录
pm<seq_no>.sh 传递系统环境变量 exec
pr<seq_no>.sh 传递提示 exec
o<jobid> (UNIX)

o<jobid>.log (Windows)

默认的系统输出文件:待定作业的输出接收 out
b.<jobid> (UNIX)

o<jobid>.lis (Windows)

默认的程序输出文件:记录程序产生的结果 out
4.4. BODY
BODY简介

BODY脚本设置作为的状态为RUNNING,记录作业的进程ID(pid),通知作业的代理,使其能监控作业的完成。登记系统输出,执行所有的PREFIX脚本,最后调用程序类型脚本。BODY立即创建系统输出文件,这样就能查看。BODY创建一个打印注册文件,包含AppWorx登录系统输出的所需的信息。

clip_image014

运行扩展脚本

BODY脚本在模块执行的不同时间也运行用户定义的脚本。这些被当作运行扩展。所有合法的shell或批处理脚本都能被当作运行扩展脚本,它必须保存在AW_HOME的exec子目录,并被适当命名。

第一个运行扩展脚本是SYSOUT脚本。在作业运行前,AppWorx执行适当的PREFIX脚本(如存在)。剩余的脚本(COMPLETION, SUCCESS,和 TROUBLE)在程序运行之后运行。

警告!SYSOUT, PREFIX, COMPLETION, TROUBLE 和 SUCCESS脚本都是被在线调用。很差的或不适当的代码可以对AppWorx控制和监测模块的执行产生不利影响。例如,脚本中的‘exit’可以会导致模块的状态改为DIED。

BODY(从程序类型脚本返回)

程序类型完成之后,BODY测模块管理/输出规格定义的“Minimum-Run-Time ”。如果过去的时间低于最低运行时间,然后作业中止和AppWorx设置错误状态等于1 。
BODY运行任何运行扩展脚本(COMPLETION, TROUBLE和SUCCESS)如果它们存在的话。可以创建一个TROUBLE脚本,在结果返回代理之前,设置重置错误状态。
BODY更新作业完成时间,返回代码,并完成状态。经过检查 所有文件已被成功地转移,BODY删除pr和下pm文件。 最后,BODY删除任何其他创建的临时文件。
Master进行下一阶段的工作处理。

4.5. 程序类型
程序类型脚本(程序执行前)

程序类型和其匹配的脚本一般传递par文件的内容给程序。程序类型是一个对象,用于优化开发和维护的效率。 程序类型对象指定程序类型的脚本。程序类型的脚本完成AppWorx和程序执行的联络,并处理程序输出。可以定义多种程序类型。程序类型的脚本都位于AW_HOME目录的exec子目录。

程序类型脚本(程序执行后)

程序完成执行之后,程序类型脚本捕获输出和确保文件被完全登记。

程序和程序类型的交互影响一个特定的任务的执行。一般而言,程序生成并返回退出状态给程序类型脚本。无论是程序或程序类型的脚本都可能会产生输出,这依赖于输出是如何设置的。任何程序写入标准输出的输出将被系统输出文件捕获。如果程序创建任何额外的输出,需要登记到AppWorx ,程序类型的脚本可以调用FILESIZE。

FILESIZE创建一个文件,包含AppWorx登记输出文件所需的信息。缺省地,输出到$file或%file%。如下列表为缺省设置。

输出 UNIX Windows
Standard out(log file) $AW_HOME/out/o<job_id> %AW_HOME\out\o<jobid>.log
Program output $AW_HOME/out/b.<$job_id> %AW_HOME\out\o<jobid>.lis
4.6. 程序
程序执行

程序执行,并返回退出状态给程序类型接口脚本和可能创建输出。程序传递状态值给程序类型脚本和执行(可选)错误检查和输出处理。一般而言,程序类型负责登记输出。

标准输出文件

程序的标准输出一般重定向到作业的日记文件,但有些程序类型脚本可能会重定向输出到一个文件。

程序输出文件

程序的输出文件包含程序实际的信息。一个程序可以生成很多程序输出文件。程序输出的缺省的位置是out子目录。

 

 

关于作者:

昵称:xiaojun.shen
档案信息:
联系方式:你可以通过xiaojun.shen@hand-china.com联系作者
点击查看发表过的所有文章...
本文永久链接: http://blog.retailsolution.cn/archives/953

 

 

对本文的评价:

 

 

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.
您必须在 登录 后才能发布评论.