你要知道你创建了处理链之后,都发生了些啥。系统怎么知道要去跑处理链的?
后台job和event都是怎么个情况?
当你去创建处理链,每个链里头都得有个开始进程,然后所有其他的进程都会等待一个event告诉他们要执行。
那么这些event事件都得由一个开始进程去触发啊。
当你去schedule一个建好的处理链(是按schedule时间来,不是外部触发),那么后台会有一个schedule的job: BI_PROCESS_TRIGGER,等着你设置的开始时间。到时间后它就跑了。
然后去触发event去启动跟它连着的下一个进程(如果是连着好几个同步进程,就会用一个event直接触发几个进程)。
这个被event触发的进程在启动的时候,会直接触发下一个event:
在这个event触发的同时,后台会有相应进程的job。然后还会有个batch job不知道干啥的暂时。
于是就这样一步步的跑起来了。
处理链的进程类型:
处理链进程类型.
就是特别频繁的启动处理链,把数据以实时形式加载到DSO里。这怎么可能呢?一条处理链万一要跑个一两个小时呢?
上一条在激活ADSO,下一条在往里面读数,这不就锁住了么?
处理链都是默认后台启动。
在处理链开始至结束这段时间内,第二次启动又来了,第三次启动也来了。倘若第一次,第二次,第三次都卡在一个进程上了?那咋办?
SAP说的是,如果第一次还在执行,那么第二次会等十分钟。如果10分钟没结束,第二次执行就会被取消。如果10分钟内结束,那就开始第二次。第三次也会等待。这不玩呢么。这样不是后台多个作业并行等待么。
所以这种状态呢,要用到上面一节的我的链接里写的,使用它的一个进程叫做“上一次运行是否仍处于活动状态” 。但是这个也不是治病良方。
因为就像现在的DTP加载,它会锁啊。
你处理链如果同步执行,但是它里面这个DTP进程它不允许并行啊。比如说主数据加载,你只能一个client一个client的顺着下来,不能并行不同的client同时加载到一个主数据里。原来行,现在BW4HANA明确了,不行。或者SAP还专门给了个解决方案的。
但是让所有主数据加载的DTP串行下来是最简单的。
如果一旦所有的DTP加载到一个主数据是串行的,那么处理链的第二次执行就等吧,第三次也等吧,后台所有的都无限期等。那么最后就是超时大家都取消。
如果处理链是流模式,那么这个下次的处理链啥时候执行呢?这个执行次数不固定,怎么灵活变通?
(以下看不懂,,,)
那么从队列中获取下一个流程的“worker”job的数量是灵活的。如果第二次、第三次或进一步执行到达当前进程,则再次启动该进程的请求只会写入队列。不再使用资源,系统也不会等待。当前流程完成后,“worker”作业将获得给定流程的所有这些启动请求,并只启动一次流程。流程链框架获取队列中的最后一个链执行,并将流程执行分配给它。这意味着第二个和第三个链执行将停止,下一个链执行将继续。
监控
流式处理的处理链使得以任何频率启动处理链成为可能,而不管执行链中的某个处理需要多长时间。在极端情况下,这将导致链中有很多进程,而链中也有很多并行执行。这意味着链中的所有流程都并行运行,而不管流程链中建模的前置/后续定义如何。然而,并行流程执行在相同数量的流程链运行中执行,这意味着保留了前置/后续关系:当运行的流程结束时,后续流程必须再次启动。
在流程链日志列表中,最近的运行显示为累积虚拟流程链运行。它的名称为%%RECENT%%,显示链中每个进程的最新执行情况,而不管它运行在哪个进程链中。因此,这个虚拟流程链运行反映了各种流程可以同时具有黄色状态,尽管它们是按一个序列建模的。虚拟日志显示在事务RSPCM中,并使用RSPCM中虚拟日志的状态。因此,在监视器中,您可以看到任何进程的最新状态,但不能看到最近(未完成)的进程链运行的状态。
通过流程链的流模式属性中的设置,可以指定要保留的日志数。如果进程链运行的数量超过此设置中指定的数量,则在创建新运行时会自动删除这些运行,从而确保数据库中的日志数在任何时候都不超过最大值。默认值为1440个日志。如果流程链每分钟启动一次,则此设置意味着日志将保留一天。
(说实话,上面我也没看)
那么实际上有哪些类型的处理链进程能用这个流处理呢?
这里面有很多view,但是你直接双击一个处理链进去是它的激活状态,你锁住这个处理链,但是不能更改。这个就是个display模式。在这个模式下,如果你的处理链active版本和edit版本一致,那你就可以计划了。
如果你选了change模式,那你就能加一些变量进去了。
回到计划和检查视图。
这俩视图不一样的。
** 处理链菜单**
创建之初,就得知道,在本地的文件是不能由处理链在后台加载的,只能放到application server上才行。
编辑进程的上下文菜单:
如果一开始没有确定目标文件夹,也可以在属性里面选display component来改。
最后处理链建完了要有个check的操作。这个操作是在干啥呢?
系统是会基于你的链的结构(子链也会递归考虑)计算并行进程个数,然后和你的选定的服务器的后台进程数量做比较。如果你的链的属性里没有指定说那个服务器,那就会考虑所有可用的服务器的进程的综合。那么怎么看你有多少个application server呢?
先讲完,如果并行进程数比后台可用进程数还多。系统会高亮显示进程数太多的处理链的那一个level。然后会有一个warning给你。
最后没问题可以激活。
激活后就要去计划执行了,要不然不执行的。而且你更改后再传输也是要再schedule一遍的。
回到应用服务器:在SM51里看,可以看到所有当前系统的应用服务器实例。SM50里能看到应用服务器里的工作进程多少。
一个应用服务器提供的资源包括:内存,工作进程,分发器,gateway,网络沟通管理员。
对于一个application server,如果它和一个数据库服务器都安装在一个硬盘上,那么这个就叫中央系统架构,如果他俩不在一起,就叫分布式系统架构。
SAP的应用服务器实例用来处理任何用户请求,如果不止一个应用服务器实例呢,就会有个主实例,包括三个核心服务:message server,enqueue server, start service 还有其他一些服务:ABAP dispatcher, gataway和ICM。
这个主实例就叫做CI或者PAS central instance、primary application Server.
对于分布式系统架构,三个核心服务会被放在一个应用服务器实例(ABAP System Central Instance)就是ASCS里。
这个实例管理lock,交换message,执行负载均衡。这个ASCS里没有对话框进程。
MS: message server 不同分发器之间的沟通。
ES: enqueue server 锁表机制管理
GW: gateway 不同SAP系统或外部系统的沟通
ICM: Internet Communication Manager: 使用http,HTTPS或SMTP等网络协议与SAP对话。
ABAP dispatcher : 不同工作进程分发执行(对话,更新,后台批量等等)
去看这个CCMS: Computing Center Management System
监控和操作SAP系统。对于处理链监控也是很好的。
去BI Monitor下面看。
当一个chain被终止了,你要想再执行。
要么就是repair。要么是repeated.
权限包括:是否能在一个处理链中执行特性操作
是否能够执行链里的一些进程
一般执行处理链的都是BW后台用户,这个后台用户自动有了处理所有BW流程类型的权限。
如果是个人跑。那么在管理进程这个分类下面。你得有S_RS_ADMWB这个授权对象。
要跑处理链,你得有S_RS_PC这个授权对象。
这里面是是否能展示,更改,执行,和log能否被删除等操作的具体规定了。
就是BW Modeling Tools里面的一个view。
这个是在BWcockpit里的。我刚看了下,很好用啊。
能看到后台正在执行的进程。
还有失败的进程。
看失败进程的里面还能看到是否是同步执行的操作导致的冲突失败。比如说加载DTP请求和归档DSO同步进行,那就会冲突出错,边写进边读出的。这个比处理链监控好使的地方在于,处理链不能区分不同链里的冲突进程。
RSRCACHE
下篇Query运行时数据及性能分析