Jeffrey's Sky

          Go with wind
          隨筆 - 14, 文章 - 1, 評論 - 15, 引用 - 0
          數(shù)據(jù)加載中……

          2008年11月4日

          安裝配置 IBM FileNet 所遇問題記錄系列 之六 使用好 VWTool工具以及 log。

          在 使用 PE WorkFlow 的過程中, 總會遇到流程中的一些異常情況。 如果,某些節(jié)點(diǎn)執(zhí)行出現(xiàn)異常,Hang住等等。 因此,此時(shí)使用一些 PE下的工具尤為重要。

          (1) vwtool 
           
                a. 啟動(dòng)
                    vwtool -r <region number> -Y <admin user>+<pwd>

                b. 常用命令
                    count *     : 列出所有系統(tǒng) queue
                    wobquery <Queue name>   : 在這里,可以列出隊(duì)列里的內(nèi)容,以及某個(gè)wobnum下的參數(shù)值等等,以便debug.

           (2) elog

                elog 記錄了PE在啟動(dòng)運(yùn)行過程中的事件, 包括 PE的system default locale. 
                elog 所在的位置在 \fnsw\local\logs\elogs folder (the same folder where you installed the Process Service software).
           

          posted @ 2011-10-21 00:46 Jeffrey Feng 閱讀(343) | 評論 (0)編輯 收藏

          在IBM P Server (LPAR)上重裝AIX操作系統(tǒng)記錄

          前幾天,有機(jī)會自己實(shí)戰(zhàn)了將刻好的AIX6.1系統(tǒng)(里面還有一些FileNet相關(guān)軟件)盤恢復(fù)到一個(gè)IBM P570 Server 上。 其中,使用了HMC,設(shè)置引導(dǎo)程序。
          現(xiàn)將過程記錄如下:

          posted @ 2011-10-21 00:46 Jeffrey Feng 閱讀(443) | 評論 (0)編輯 收藏

          在 WebSphere中 配置 Oracle Datasource 問題記錄

               摘要: 在 WebSphere中 配置 Oracle Datasource 問題記錄  閱讀全文

          posted @ 2010-09-07 11:53 Jeffrey Feng 閱讀(753) | 評論 (0)編輯 收藏

          XA Datasource 與 Non-XA Datasource 區(qū)別

               摘要:   閱讀全文

          posted @ 2010-08-27 13:39 Jeffrey Feng 閱讀(4576) | 評論 (2)編輯 收藏

          安裝配置 IBM FileNet 所遇問題記錄系列 之五 打好客戶端的Patch

          CE 和 PE都有自己的客戶端安裝包。 這些安裝包有助于CE,PE, AE間在相互通訊時(shí)不會因?yàn)槟承┬“姹镜母膭?dòng)而使得相互不匹配。

          因此,注意,一定要, CE,PE間相互的Client端相互打好Patch.
          還要將CE,PE的Client 端都給AE打一遍。


          posted @ 2010-08-11 11:00 Jeffrey Feng 閱讀(337) | 評論 (0)編輯 收藏

          安裝配置 IBM FileNet 所遇問題記錄系列 之四 檢查AE,PE, CE 狀態(tài)是否正常


          在Install & Config 完 IBM FileNet之后,一個(gè)重要的事情就是check所安裝的AE,PE,CE是否安裝正確、能夠正常啟動(dòng)。 這里,簡要列出一些check方法。

          1. 啟動(dòng) CE DB .
              與CE有關(guān)的一般有兩個(gè) DB。 一個(gè) 是 FNGCDDB用于記錄 CE Domain的一些配置信息。 主要有以FNGCD為 prefix 的四個(gè)表(FNGCD, FNGCD_ADDON, FNGCD_CESERVERS, FNGCD_OSCBROWNERS)。 當(dāng)你有需要想重新建立CE Domain的時(shí)候,最好將這四個(gè)表刪掉,然后重新建。
               再一個(gè)DB就是 Object Store所在的DB,比如FNOS1DB. 在這個(gè)DB中,在建完Domain之后共有179張表。
           
                值得注意的是,CE App Server是通過 DataSource來連接CE的DB的。所以,如果,有任何CE DB的改變,也同時(shí)需要更改DataSource。 顯而易見,因?yàn)橛袃蓚€(gè) CE DB,所以也有兩套CE DataSource, 一個(gè)是用于連接 FNGCDDB(還有個(gè)以XA結(jié)尾的,這個(gè)在運(yùn)行時(shí)經(jīng)常被用到),一個(gè)是用于連接FNOSDB,即Object Store DB。CE 就是靠這兩個(gè)Source來取得CE 信息的。

                Check CE 狀態(tài)的方法:
                http://localhost:9080/FileNet/Engine.

          2.  啟動(dòng) AE。
          由于 AE是一個(gè) WebApp 程序,所以只需要啟動(dòng) AE所在的 Server即可。
               
                Check AE 狀態(tài)的方法:
               http://localhost:9080/Workplace

          3. 啟動(dòng) PE
          PE 核心是一個(gè) C++程序。在運(yùn)行時(shí), AE會嘗試連接 PE,CE,而PE和CE之間也有連接關(guān)系。

          Windows based 的PE server需要注意有兩個(gè)系統(tǒng) Service(通過 Service.msc)是需要起來的。 一個(gè) 叫 PE Service Manager,一個(gè)是Img ControlService;需要檢查;

          再有一個(gè) 重要的命令是 initfnsw,可以通過這個(gè)命令來起停 PE server。

          ① initfnsw start     //-啟動(dòng)PE
          ② initfnsw stop      //-停止PE
               killfnsw -y          //-停止PE
          ③ initfnsw status    //-查看PE狀態(tài)
          ④ initfnsw restart   //-重啟PE

          另外, 檢查 PE的狀態(tài),可以用這個(gè)URL 來 check,

          http://localhost:32776/IOR/ping.

          另外,有關(guān) PE 和 CE間連接性的檢查方法:

          在 PE所在 Server上,用如下URL check,

          http://localhost:32776/IOR/FileNet.CE.PEDirectoryServer

          A "good" sample response from the PEDirectoryServer looks something like this:
          IOR:000000000000002049444c3a46696c654e65745f63656d707270632f63656d707270633a312e300000000001000000000000007e000102000000000c31302e31352e372e31303800071d000000000031afabcb000000002084240cba00000001000000000000000100000008526f6f74504f41000000000800000001000000001400000000000002000000010000001800000000050100010000000000010109000000010001010000000026000000020002
           
          此外,quick test are (on PE  server):

          If you’re having trouble with the PE to CE communications, there may be something wrong with the java environment. Try the following tests in a command prompt window on the PE Server (Substituting appropriate host names, ports, user names, group names, and passwords as appropriate for your configuration):

          On your PE Server:

          cd \fnsw\bin

          Try a basic "little pipe" ping:
          \fnsw\java\jre\bin\java -classpath pe.jar;pe3pt.jar filenet.pe.ceorb.test.PEDirectoryClientTest /port=32776 /rpc=ping

          Set the little pipe’s CE connection configuration:
          \fnsw\java\jre\bin\java -classpath pe.jar;pe3pt.jar filenet.pe.ceorb.test.PEDirectoryClientTest /port=32776 /rpc=setConfig /uri=http://hqbpm34:7001/wsi/FNCEWS40DIME/ /user=PEAdmin /password=secret

          Get a list of all realm names:
          \fnsw\java\jre\bin\java -classpath pe.jar;pe3pt.jar filenet.pe.ceorb.test.PEDirectoryClientTest /port=32776 /rpc=getRealmNames

          Get info about a user named PEAdmin:
          \fnsw\java\jre\bin\java -classpath pe.jar;pe3pt.jar filenet.pe.ceorb.test.PEDirectoryClientTest /port=32776 /rpc=getUserInfo /user=PEAdmin

          Get info about a user named PEAdmin in a specific realm:
          \fnsw\java\jre\bin\java -classpath pe.jar;pe3pt.jar filenet.pe.ceorb.test.PEDirectoryClientTest /port=32776 /rpc=getUserInfo /user=PEAdmin /realm= dc=epbdc,dc=eng,dc=filenet,dc=com

          Get info about a group named PEAdministrators:
          \fnsw\java\jre\bin\java -classpath pe.jar;pe3pt.jar filenet.pe.ceorb.test.PEDirectoryClientTest /port=32776 /rpc=getUserInfo /user=PEAdministrators

          Get “group expansion info” for a group named PEAdministrators:
          \fnsw\java\jre\bin\java -classpath pe.jar;pe3pt.jar filenet.pe.ceorb.test.PEDirectoryClientTest /port=32776 /rpc=expandGroup /group=PEAdministrators

          The above runs should produce output of some sort that might shed light on a CE configuration or connection problem…

          取得 PE run 的 LOG:
          Get some detailed information about the PE to CE communications

          If the PE still can not get connected to the CE, we need to enable some of the java tracing to see what’s happening when the PEDirectoryServer communicates with the CE.

          For PE 4.0.2 and newer, including PE 4.5

          To enable the tracing, we need an fnlog4j.properties file in the \fnsw\java\jre\lib directory on the PE Server. The fnlog4j.properties file needs to include a line something like this:

          log4j.logger.filenet.pe.ceorb.server=DEBUG, TXT

          The easiest way to do this is to copy the \fnsw_loc\sd\fnlog4j.properties.sample file as \fnsw\jre\lib\fnlog4j.properties (without the “.sample”). Then, using a simple text editor (e.g., notepad), add the “, TXT” to the above line of text in the fnlog4j.properties file.

          The PEDirectoryServer will see the fnlog4j.properties file and that will trigger additional tracing and logging to occur. After putting the fnlog4j.properties file in the \fnsw\java\jre\lib directory, click the Apply button in the Process Task Manager’s Security tab again.

          After it fails, check the java trace file. The location of the java trace file is defined in the fnlog4j.properties file itself. By default, it's c:\PE.txt.

          3. 檢查 connection to PE from AE.

          在登錄到 AE 之后,可以點(diǎn)擊 AE Site Preference中 Task Pages頁面,看是否能打開。以及PCC, Process Designer是否都能夠打開以及 Transfer Workflow.



          posted @ 2010-08-08 13:20 Jeffrey Feng 閱讀(1118) | 評論 (0)編輯 收藏

          安裝配置(Install configure IBM FileNet) 所遇問題記錄系列 之三 配置 (Configure) Application Engine (AE)

               摘要: 配置 (Configure) Application Engine (AE)  閱讀全文

          posted @ 2010-08-02 23:03 Jeffrey Feng 閱讀(518) | 評論 (0)編輯 收藏

          開源軟件問題記錄系列 之一 在 Tomcat 中設(shè)置 Datasource

               摘要: 開源軟件問題記錄系列 之一 在 Tomcat 中設(shè)置 Datasource  閱讀全文

          posted @ 2010-08-02 10:51 Jeffrey Feng 閱讀(225) | 評論 (0)編輯 收藏

          安裝配置 IBM FileNet 所遇問題記錄系列 之二 一定要 Enable Application security 在配置完 Content Engine (CE) 之后


          由于使用了 TDS 作為 FileNet 的 LDAP 系統(tǒng),所以一定要在 WAS中將Admin Security enable。 這時(shí),需要注意的是如果沒有在 WAS 的 Global security 中將 Application Security Enable,那么在配置 Content Engine (CE) Domain 的時(shí)候,就會出現(xiàn) Annoymous user cannot access to CE 的錯(cuò)誤。 所以,一定要同時(shí) Enable Application Security.



          posted @ 2010-07-30 13:47 Jeffrey Feng 閱讀(294) | 評論 (0)編輯 收藏

          安裝配置 IBM Filenet 所遇問題記錄系列 之一 在IBM Tivoli Directory Server 配置完之后

               摘要: 安裝配置 IBM Filenet 所遇問題記錄系列  閱讀全文

          posted @ 2010-07-30 13:33 Jeffrey Feng 閱讀(462) | 評論 (0)編輯 收藏

          有關(guān)在eclipse上遠(yuǎn)程debug的問題。

             Java 提供了遠(yuǎn)程debug的功能,這確實(shí)是一件很好的事。它能夠幫助我們在一些沒有虛機(jī)的OS(比如HP,AIX,等等)下調(diào)試我們的程序。

             1.建立Remote debug的準(zhǔn)備工作。
              a.可以將這些在java命令行中的設(shè)置放到一個(gè)script中去。例子如下所示:
           
              java -Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y  -classpath
              其中,“-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y”是必須的。suspend=y---表明是在程序啟動(dòng)后hang在那個(gè)端口處并監(jiān)聽(如果設(shè)為n,則不會hang);address=8787---表明是在遠(yuǎn)端機(jī)器上的端口號。除此之外,在java后也可以添加java的系統(tǒng)環(huán)境變量,如-D等等。   
              b.在eclipse中可以通過設(shè)立一個(gè)remote debug的方式來建立這種連接。  
             2.遠(yuǎn)程調(diào)試時(shí),局部變量的值無法Watch/Inspect問題的解決
              這實(shí)際上是由eclipse在build的時(shí)候,沒有將javac后的option -g加上去。只有當(dāng)加上 -g這個(gè)參數(shù)時(shí),所有的調(diào)試信息才會被build到class文件中去。
              但ecipse沒有提供這樣在build時(shí)設(shè)置參數(shù)的user interface。所以,最好的方式就是寫一個(gè)Ant腳本。
              例子如下,

               <?xml version="1.0" encoding="UTF-8" standalone="no"?>
              <project basedir="." default="build" name="ssdv">
              <property name="build.location" value="../ssdv_build"/>
              <property name="debuglevel" value="source,lines,vars"/><!--必須的-->
              <property name="target" value="1.5"/>
              <property name="source" value="1.5"/>
              
              <target name="init">
                  <mkdir dir="bin"/>
              </target>
              
              
              <target name="clean">
                  <delete dir="bin"/>
              </target>
             
              <target depends="init" name="build-project">
                  <echo message="${ant.project.name}: ${ant.file}"/>

                  <javac debug="true" debuglevel="${debuglevel}" destdir="bin" source="${source}" target="${target}">  <!--必須的-->
                      <src path="."/>
                      <classpath refid="ssdv.classpath"/>
                  </javac>

              </target>
              
          </project>
             
               這樣,將生成的build工程拷貝到要測試的遠(yuǎn)程OS。啟動(dòng)腳本,然后就可以看到local variables了。

          posted @ 2008-12-12 17:34 Jeffrey Feng 閱讀(817) | 評論 (0)編輯 收藏

          Drools 規(guī)則引擎的使用總結(jié)

              前一段時(shí)間在開發(fā)了一個(gè)做文本分析的項(xiàng)目。在項(xiàng)目技術(shù)選型的過程中,嘗試使用了Drools規(guī)則引擎。讓它來作為項(xiàng)目中有關(guān)模式分析和關(guān)鍵詞匹配的任務(wù)。但后來,因?yàn)槟撤N原因,還是撇開了Drools?,F(xiàn)將這個(gè)過程中使用Drools的一些經(jīng)驗(yàn)和心得記錄下來。
          (一)什么時(shí)候應(yīng)該使用規(guī)則引擎
              這實(shí)際是一個(gè)技術(shù)選型的問題。但這個(gè)問題又似乎是一個(gè)很關(guān)鍵的問題(一旦返工的話,你就知道這個(gè)問題是多么重要了)。不知大家有沒有過這樣的經(jīng)驗(yàn)和體會。往往在項(xiàng)目開始的時(shí)候,總會遇到應(yīng)該選用什么技術(shù)?是不是應(yīng)該使用最新的技術(shù)?或者應(yīng)該選用什么技術(shù)呢(PS:現(xiàn)在計(jì)算機(jī)軟件中的各種技術(shù)層出不窮,具有類似功能的技術(shù)很多)?
              不管怎么樣,這些問題總會困擾著我。比如,這次的這個(gè)項(xiàng)目。項(xiàng)目要求是要在一些log文件中(這些log文件都是很大的應(yīng)用系統(tǒng)所產(chǎn)生的,但由于legacy的原因,log本身的維護(hù)和規(guī)范工作一直沒有得到改善,所以想借助于一些外部應(yīng)用對這些log做以分析和清洗)抽取出有用的信息。
              于是,第一個(gè)想到的就是,這是一個(gè)文本挖掘類的項(xiàng)目。但又想,要抽取有用信息,必須得建立一些規(guī)則或pattern(模式)。所以,我第一個(gè)想到了規(guī)則引擎。因?yàn)檫@里面要建立好多規(guī)則,而這些規(guī)則可以獨(dú)立于代碼級別(放到一個(gè)單獨(dú)的drl文件里)并可以用規(guī)則引擎去解析和執(zhí)行。另一個(gè)重要的原因是,我原來用過,比較熟悉。這樣,也可以節(jié)省開發(fā)時(shí)間吧。于是,好不猶豫的就開始做了Demo....
              但事實(shí)上,在經(jīng)歷了一個(gè)多星期的編碼、測試后,我發(fā)現(xiàn)運(yùn)用規(guī)則引擎實(shí)在是太笨拙了。
              (1)首先必須建立一些數(shù)據(jù)模型。通過這些模型來refer規(guī)則文件中的LHS和Action。
              (2)還要考慮規(guī)則的conflict。如果有一些規(guī)則同時(shí)被觸發(fā),就要考慮設(shè)定規(guī)則的優(yōu)先級或者是設(shè)定activiation-group來保證在一個(gè)group中的規(guī)則只有一個(gè)規(guī)則可以被觸發(fā)。
              (3)對于‘流’規(guī)則group ruleflow-group的使用。如果要控制在workingmemory中的規(guī)則被觸發(fā)的順序,則可以將這些規(guī)則分組。然后,通過規(guī)則建模的方式來實(shí)現(xiàn)。但這也添加了一定的effort。修改或者更新不大方便。
              所以,基于上述體會,我更認(rèn)為規(guī)則引擎更適用于那些對非流程性規(guī)則匹配的應(yīng)用。當(dāng)然,Drools也支持對流程性規(guī)則的建模過程。但,這也許不是最好的方式。
          (二)Drools規(guī)則引擎的使用雜記
              (1)Fact 的變更監(jiān)聽。在Drools里,如果一個(gè)Fact通過規(guī)則而改變,則需將這種改變通知給規(guī)則引擎。這里,一般有兩種方式:顯式和隱式。
                   顯式---在drl文件中通過 update、modify來通知;在程序中,通過Fact的引用調(diào)用modifyObject等方法來實(shí)現(xiàn)。
                   隱式---通過在java bean實(shí)現(xiàn)property Listener Interface來讓引擎自動(dòng)監(jiān)聽到屬性值的變化。我更習(xí)慣于這種方式。因?yàn)?,一般看來凡是在?guī)則引擎中添加到fact都是希望引擎來幫你進(jìn)行管理的。所以,那它自己看到fact的變化是種很省事的辦法。也很簡單,就是用java bean property 監(jiān)聽的方式。
                   通過StatefulSession來注冊。
                   調(diào)用StatefulSession的某個(gè)instance 的insert(Object,true)實(shí)現(xiàn)。而這個(gè)object是一個(gè)java bean。其中,要實(shí)現(xiàn)
                
                  
          private final PropertyChangeSupport changes  = new PropertyChangeSupport( this );
              public void addPropertyChangeListener(final PropertyChangeListener l) {
                  this.changes.addPropertyChangeListener( l );
              }

              public void removePropertyChangeListener(final PropertyChangeListener l) {
                  this.changes.removePropertyChangeListener( l );
              }
            
                  然后在set方法中調(diào)用
              this.changes.firePropertyChange( "temp",null,this.temp );
               (2)規(guī)則觸發(fā)的優(yōu)先級、組設(shè)置
              往往,在設(shè)計(jì)我們自己的規(guī)則時(shí),要考慮規(guī)則的觸發(fā)條件。這不僅限于LHS的條件部分,還有規(guī)則本身被觸發(fā)的有些設(shè)置等等。這里,列出一些比較常用和有效的規(guī)則優(yōu)先級設(shè)置方式,以及需要注意的地方。
                   A.通過Salience方式。此值可正可負(fù)。越大優(yōu)先級越高,也會被引擎首先執(zhí)行。
                   B.通過ruleflow-group 方式。實(shí)際上,使用這種方式也就是在使用建立規(guī)則流的方式。在Eclipse 3.3 中,Drools提供了建立規(guī)則流的插件。要在drl的同級目錄中建立rf和rfm兩個(gè)文件(當(dāng)然,插件會幫助你建立這些)。
                  
          選擇RuleFlow File。
                這里,需要注意的一點(diǎn)是要在啟動(dòng)規(guī)則引擎的時(shí)候,加入啟動(dòng)rule flow的代碼。

               InputStreamReader source = new InputStreamReader(RuleManager.class
                              .getResourceAsStream(rule_path));
                     PackageBuilder builder = new PackageBuilder();
                      builder.addPackageFromDrl(source);
                      builder.addRuleFlow(new InputStreamReader(RuleManager.class
                              .getResourceAsStream(rule_flow_path)));
                     Package pkg = builder.getPackage();
                      RuleBase ruleBase = RuleBaseFactory.newRuleBase();
                      ruleBase.addPackage(pkg);
                然后,在每次啟動(dòng)規(guī)則引擎的時(shí)候,調(diào)用如下方法:

                      StatefulSession ss;
                      ss.startProcess(flowProgress);
                      ss.fireAllRules();

                      flowProgress 是一個(gè)string類型。這個(gè)flow的名字。

          這個(gè)rule flow圖中,顯示了一個(gè)簡單的規(guī)則流。如RSA就是一個(gè)rule-flow的名字。在這個(gè)rule set中可以設(shè)定一組rules。這樣,就可以分開規(guī)則執(zhí)行的順序。在于rf和rfm同名的另一個(gè) drl文件中定義這些組的名字。通過關(guān)鍵字 ruleflow-group 來表明。
              C.通過activation-group的方式。通過這種方式,可以exclude一組rule中一旦有一個(gè)rule被invoke,而其它rule不會被execute。同時(shí),可以搭配使用salience關(guān)鍵字來標(biāo)明每個(gè)rule的優(yōu)先級,這樣就能夠使得你想要的一般性概念的rule先被匹配執(zhí)行。
              D.在使用ruleflow-group 的時(shí)候要注意使用lock-on-active true 關(guān)鍵字在每個(gè)rule。這樣可以避免一旦有rule被觸發(fā),不會造成循環(huán)匹配執(zhí)行。
              E.如果在LHS部分,需要調(diào)用某個(gè)方法來返回真、假值作為判斷的一個(gè)條件,那么可以用eval函數(shù)。
              如,eval(pattern.matched(5,$line.getCurrLine()))
              其中,pattern是某個(gè)加入到workingmemory中的一個(gè)實(shí)例。matched是這個(gè)實(shí)例所代表類的一個(gè)方法。它返回boolean類型。
             
            (3)Drools規(guī)則引擎的使用感受
             
          總之,Drools還是一個(gè)很不錯(cuò)的開源規(guī)則引擎。現(xiàn)在v4.0以上的版本已經(jīng)比以前的版本在速度上有了很大的提升??梢宰鳛槲覀円话銘?yīng)用程序系統(tǒng)的中間件產(chǎn)品(那些規(guī)則不是很經(jīng)常改變的系統(tǒng),已經(jīng)非流程類規(guī)則)。但是,這其中還是需要一些額外的effort來學(xué)習(xí)它的使用文檔以及整體架構(gòu),有一定的學(xué)習(xí)曲線。
            
              最后,我想一個(gè)較好的對于技術(shù)使用的practice就是:首先知道它能為你做什么,它最好的應(yīng)用領(lǐng)域,然后再去深入。
             
              (PS:如果誰有使用Drools的問題,可以聯(lián)系我!一起討論!)

               
              

          posted @ 2008-11-04 14:19 Jeffrey Feng 閱讀(13643) | 評論 (13)編輯 收藏

          主站蜘蛛池模板: 益阳市| 榕江县| 财经| 迁安市| 潮州市| 舒兰市| 定南县| 云南省| 陆良县| 沙坪坝区| 台中县| 马公市| 西林县| 黄梅县| 大连市| 中阳县| 准格尔旗| 酉阳| 连城县| 平泉县| 河南省| 康保县| 黎平县| 洪泽县| 高雄市| 抚远县| 定兴县| 沅江市| 定结县| 满城县| 敦化市| 桃源县| 平顺县| 鄂托克旗| 桂东县| 宜州市| 信阳市| 巴中市| 浠水县| 阜南县| 商河县|