1.每个请求道WEB服务器的时候被com.tonbeller.wcf.controller.RequestFilter拦截
1.1 在ThreadLocal中建立Stack对象,
1.2 建立RequestContext对象并把该对象保存到Stack中,
1.3 建立WcfController对象并且保存到session中(键值WcfController.class.getName() + ".dispatcher";),该对象对于一个SESSION只有一个。
2.mondrianQuery标签
2.1 根据MondrianOlapModelTag.class.getResource("/com/tonbeller/jpivot/mondrian/config.xml")用digester创建MondrianModel对象,并且根据标签提供的属性设置MondrianModel对象
2.2 创建stackState模式的OlapModelProxy对象,并且以键值ID保存到SESSION中
2.3 以MondrianModel对象为参数调用OlapModelProxy.initializeAndShow方法
3.每个table标签
3.1根据标签中的query属性,找到第2步建立的OlapModel对象
3.2根据getClass().getResource("config.xml")和TableComponent.class.getResource("rules.xml");建立TableComponent对象。
3.3将新建立的TableComponent对象以标签的id属性为键值,存储到session中。
4.每个render标签
4.1根据ref找到TableComponent对象
4.12调用TableComponent对象的render方法生成TableComponent的XML表示
4.13Transformer对象的transform方法,将xml转换成HTML输出