PostRank

2008/09/20

如何安裝Mantis(Issue Tracker)

步驟 1: 下載


http://downloads.sourceforge.net/mantisbt/mantis-1.1.2.tar.gz?modtime=1213703093&big_mirror=0

步驟 2: 解壓縮

下載完成後,只要輸入下列命令:
  1. 進入Linux命令模式,切換成為系統管理者:

    su

  2. 將下載的壓縮檔解壓縮到 /opt下:

    tar -zxvf mantis-1.1.2.tar.gz -C /opt/lampp/htdocs/

    這樣就完成了。Mantis現在已經解壓縮在 /opt/lampp/htdocs/mantis-1.1.2 目錄下了。

  3. 為方便使用,縮短目錄

    mv /opt/lampp/htdocs/mantis-1.1.2 /opt/lampp/htdocs/mantis

步驟 3: 設定資料庫

  1. 啟用phpMyAdmin工具

    建立新資料庫:mantis,校對:utf8_general_ci

步驟 4: 安裝

  1. 啟動安裝程序

    http://localhost/mantis/admin/install.php

    輸入db的username & password 和其它的設定

  2. 登入設定

    http://yoursite/mantis/index.php

    默認用戶:administrator 口令:root 登入,登入後更改密碼。

  3. 設定系統語系為正體中文

    Manage->Preferences->Language ->chinese_traditional

  4. 清除admin目錄

    進入Linux命令模式,切換成為系統管理者:

    su

    rm -rf /opt/lampp/htdocs/mantis/admin



如何安裝XAMPP

XAMPP中包括:Apache 2.2.9, MySQL 5.0.51b, PHP 5.2.6 & 4.4.8 & PEAR + SQLite 2.8.17/3.3.17 + multibyte (mbstring) support, Perl 5.10.0, ProFTPD 1.3.1, phpMyAdmin 2.11.7, OpenSSL 0.9.8h, GD 2.0.1, Freetype2 2.1.7, libjpeg 6b, libpng 1.2.12, gdbm 1.8.0, zlib 1.2.3, expat 1.2, Sablotron 1.0, libxml 2.6.31, Ming 0.3, Webalizer 2.01, pdf class 009e, ncurses 5.8, mod_perl 2.0.4, FreeTDS 0.63, gettext 0.11.5, IMAP C-Client 2004e, OpenLDAP (client) 2.3.11, mcrypt 2.5.7, mhash 0.8.18, eAccelerator 0.9.5.3, cURL 7.18.2, libxslt 1.1.8, phpSQLiteAdmin 0.2, libapreq 2.08, FPDF 1.53, XAMPP Control Panel 0.6

步驟 1: 下載


http://www.apachefriends.org/download.php?xampp-linux-1.6.7.tar.gz

步驟 2: 安裝



下載完成後,只要輸入下列命令:
  1. 進入Linux命令模式,切換成為系統管理者:

    su

  2. 將下載的壓縮檔解壓縮到 /opt下:

    tar xvfz xampp-linux-1.6.7.tar.gz -C /opt

    注意:請使用這些指令來安裝XAMPP,不要使用任何微軟作業系統底下的工具程式來解壓縮檔案, 它會使得程式無法正確執行。

    注意2:這個指令會覆蓋掉舊有的XAMPP版本。

這樣就完成了。XAMPP現在已經安裝在 /opt/lampp 目錄下了。

步驟 3: 啟動

要啟動XAMPP只要執行下列的指令:

/opt/lampp/lampp start

現在在你的畫面上,你會看到類似下方的這些訊息:

Starting XAMPP 1.6.7...
LAMPP: Starting Apache...
LAMPP: Starting MySQL...
LAMPP started.

Apache 和 MySQL 現在已經啟動了。

2008/09/18

How-to - Java Concurrent Programs

How-to - Java Concurrent Programs

I talk about java concurrent programs quite a lot on this blog, if you want have publisher interact with the EBS concurrent manager you typically need to write a java concurrent program (JCP) ... I have been scouring the user docs for EBS and can not find a reference to them ... that leaves you folks stuck. Rather sneakily and maybe lazily I have lifted the 'How-to' doc from the ATG pages ... thanks to Venkat from the Concurrent Processing team. Without further ado ...


Overview


Concurrent Processing provides an interface 遷avaConcurrentProgram? with abstract method runProgram() which passes the concurrent processing context 舛pContext?. The concurrent program developer will implement all of their business logic for a concurrent program in runProgram(). The main() method, implemented by AOL, will call runProgram() after performing all of the required initialization for the concurrent program, including establishing a database connection, initializing the required contexts, and setting up the log and output files. CpContext will have the request specific log and output file input methods. The class name with the main method will be registered as the java executable file name in the register executable form or by using pl/sql API.

Developer has to register the full package path for the class in register executable form. For example, if wip product creates a class in $WIP_TOP/java/shopfloor/server/BackgroundProgram.class, this is then registered with the package location 双racle/apps/wip/shopfloor/server/BackgroundProgram.class?. Developer will register 腺ackgroundProgram? as the executable file name and 双racle.apps.wip.shopfloor.server? as the package path in the register executable form. Developer has to follow the java notation to register the package path location, ?.? to denote the directory instead of ?/? in UNIX.

Java Concurrent Program parameters must register with token names in the parameter screen of the register concurrent programs form. Developer can get the value of the parameter for a given token name in the java concurrent program. These token names will be used in passing the parameter values as parameter string to the concurrent program from the command line for testing the java concurrent program.

Developer should set the status and completion text for the java program by using the setCompletion() method provided by AOL. The runProgram() method should call setCompletion() method to report the program completion status to the Concurrent Manager. The program may set its completion status to Normal, Warning or Error. Completion text is optional.


Steps in writing Java Concurrent Program


Template Program:


Copy the template Java Concurrent Program from $FND_TOP/java/cp/request/Template.java to your directory and start coding according to your requirement. Change file name and class name to your required name as Java Concurrent Program name.
================= Template.java===========================
package oracle.apps.fnd.cp.request;
// Change the package name to the required one.
// import all the other required classes/packages.

import oracle.apps.fnd.util.*;
import oracle.apps.fnd.cp.request.*;

// Change the name of the class from Template to your
// concurrent program class name
public class Template implements JavaConcurrentProgram
{
/** Optionally provide class constructor without any arguments.
* If you provide any arguments to the class constructor then while
* running the program will fail.
*/

public void runProgram(CpContext pCpContext)
{
ReqCompletion lRC = pCpContext.getReqCompletion();
String CompletionText = "";

/* Code your program logic here.
* Use getJDBCConnection method to get the connection
* object for any JDBC operations.
* Use CpContext provided commit,rollback methods to
* commit/rollback data base transactions.
* Don't forget to release the connection before returning
* from this method.
*/

/* Call setCompletion method to set the request completion
* status and completion text.
* Status values are ReqCompletion.NORMAL,ReqCompletion.WARNING,
* ReqCompletion.ERROR.
* Use Completion text message of length 240 characters.
* If it is more than 240 then full string will appear in
* log file and truncated 240 characters will be used as
* request completion text.
*/
lRC.setCompletion(ReqCompletion.NORMAL, CompletionText);
}
}
==================End of Template.java===========================


program Logic


Implement the runProgram with your Java Concurrent Program business logic. runProgram() gets the CpContext . CpContext is a subclass of AOL/J AppsContext which provides the request specific member classes LogFile to write to request log file, OutFile to write to request output file and ReqCompletion to set the completion status of the request.

Program Parameters
CpContext uses the AOL/J utility Parameter List to pass the parameters to the Java Concurrent Program.
Please refer AOL/J Parameter list to get the Parameter List name, value pairs. You will be referring parameter list name as the parameter name and corresponding value as the parameter value in the Java Concurrent Program. You have to register the parameter names as token name in the register concurrent program form Parameter screen.

Database Operations
Use getJDBCConnection method to get the connection object for any JDBC operations within program and release the connection to the AppsContext connection pool. Use CpContext's commit(), rollback() methods to commit or rollback the transactions in the database. These methods will set the program proffered rollback segments after commit or rollback segments for the rest of the database transaction in the Java Concurrent Program.

Setting request Completion Status
Call setCompletion() method of the ReqCompletion object which is a member of CpContext before returning from your Java Concurrent Program to set the completion status for the program and optional completion text.


Register executable


Register your Java Concurrent Program class name as execution_file_name and package name in execution_file_path in register concurrent executables form.

Register Concurrent Program


Register you Java Concurrent Program as concurrent program in the register concurrent program form. Register all the parameters that you want to pass to the program in the parameter screen of this form. Register the Parameter List names referred in the program as the token names in the parameter screen.

Test Program from OS Prompt


You can test your Java Concurrent Program from OS prompt by using the following syntax:

jre -Ddbcfile=
[ -Drequest.logfile= ]
[ -Drequest.requestid= ]
[ -Drequest.outfile= ]
[ -Drequest.userid= ]
[ -Drequest.respapplid= ]
[ -Drequest.respid= ]
[ -Drequest.secgrpid= ]
[ -Drequest.enabletrace= ]
oracle.apps.fnd.cp.request.Run
[]

Example:
jre -Ddbcfile=/d2/fnd/secure/appsnode_appdb.dbc
-Dreqeust.requestid=23453 -Drequest.logfile=./myreq.log
oracle.apps.fnd.cp.request.Run oracle.apps.wip.program.MyProg
"TOKEN1=value1:TOKEN2=value2"


If you don't specify the 'request.logfile' with -D option then the all the log file information will be printed to the standard output. Specify the 'request.requestid' to rerun already completed request. You can specify the all the application user specific context values with -D to get the specific user context to the program when run from the OS prompt. Pass all the parameters if any by using the AOL/J Parameter list syntax.

Sample Program


package oracle.apps.fnd.cp.request; 

import java.io.*;
import java.sql.*;
import oracle.apps.fnd.util.*;

public class AvailableProg implements JavaConcurrentProgram
{
String applName;

public AvailableProg()
{
// if no parameter value is specified for
// APPLNAME then use FND as default value
applName = "FND";
}

public void runProgram(CpContext pCpContext)
{
// get the JDBC connection object
Connection mJConn = pCpContext.getJDBCConnection();

// get parameter list object from CpContext
ParameterList lPara = pCpContext.getParameterList();

// get ReqCompletion object from CpContext
ReqCompletion lRC = pCpContext.getReqCompletion();

String lQuery =
" select substr(user_concurrent_program_name,1,70) , " +
" decode(enabled_flag,'Y','Enabled','N','Disabled') " +
" from fnd_concurrent_programs_vl cp, fnd_application_vl a " +
" where cp.application_id = a.application_id " +
" and a.application_short_name = ? " +
" order by 1 " ;

// check for the APPLNAME parameter token name and if it there get
// value and use it as the application short name in the query
while (lPara.hasMoreElements())
{
NameValueType aNVT = lPara.nextParameter();
if ( aNVT.getName().equals("APPLNAME") )
applName = aNVT.getValue();
}

try
{
PreparedStatement lStmt = mJConn.prepareStatement(lQuery);
lStmt.setString(1, applName );
ResultSet lRs = lStmt.executeQuery();

// get OutFile object from CpContext
OutFile lOF = pCpContext.getOutFile();

// get LogFile object from CpContext
LogFile lLF = pCpContext.getLogFile();

lLF.writeln("Generating Programs for Application : " + applName,
LogFile.STATEMENT);
lOF.writeln(
" Available Concurrent Programs for Application " +
applName );
lOF.writeln(
"Concurrent Program Name Enabled");
lOF.writeln(
"----------------------------------------------" );

while( lRs.next() )
{
lOF.writeln(lRs.getString(1) + " " + lRs.getString(2) );

}

lLF.writeln("Generated Programs for Application : " + applName,
LogFile.STATEMENT);
lStmt.close();
lRC.setCompletion(ReqCompletion.NORMAL, "Request Completed Normal");
}
catch (SQLException e)
{
lRC.setCompletion(ReqCompletion.ERROR, e.toString());
}
finally
{
pCpContext.releaseJDBCConnection();
}
}
}


NOTE: If you're creating a BC4J Application Module in a concurrent program and are passing CpContext object to it, you should NOT call releaseJDBCConnection() on CpContext while it is still in use by the BC4J AM. You should clean up after the AM properly by calling am.remove().


Some Q & A


Q. How can I run my Java Concurrent Program from OS prompt?
A. To run a Java Concurrent Program from the OS prompt the syntax is as follows:
Please note that there is no newline between different -D options and arguments to jre.

jre -Ddbcfile=
[ -Drequest.logfile= ]
[ -Drequest.requestid= ]
[ -Drequest.outfile= ]
[ -Drequest.userid= ]
[ -Drequest.respappid= ]
[ -Drequest.respid= ]
[ -Drequest.secgrpid= ]
[ -Drequest.enabletrace= ]
oracle.apps.fnd.cp.request.Run
[]

Example:
jre -Ddbcfile=/d2/fnd/secure/appsnode_appdb.dbc
-Dreqeust.requestid=23453 -Drequest.logfile=./myreq.log
oracle.apps.fnd.cp.request.Run oracle.apps.wip.program.MyProg
"TOKEN1=value1:TOKEN2=value2"

Q. Can I use Constructor for my Java Concurrent Program class?
A. You can use the constructor without any arguments to it.
Example:
class MyProg implements JavaConcurrentProgram
{
// DO NOT USE MyProg(String arg1, int arg2...)
public void MyProg()
{
...
}
public void runProgram(CpContext pCpContext)
{
....
}
}

Q. Can my JCP class Constructor accept arguments?
A. NO, do not use any class constructor with arguments. Refer above Example.

Q. How to pass parameters to my Java Concurrent Program?
A. Java Concurrent Program uses AOL/J Parameter List utility APIs for parameter management. To pass parameters to Java Concurrent Program you have to register those parameters with token name by using the "Register Concurrent Program". In the JCP you can access the registered token name in the AOL/J ParameterList API and get corresponding value to get the value of the parameter. Refer AOL/J ParameterList API for more information.

Q. Can I use different output file name than the standard name?
A. Yes, you can use different output file name by calling the setOutFile method of OutFile class.

Q. What will happen if I don't call setCompletion method of ReqCompletion?
A. Your request run by using this program will complete with error.

Hope its useful ... I have a copy of the javadoc posted here.

2008/09/12

How Do I Troubleshoot XML with Collections?

Subject: How Do I Troubleshoot XML with Collections?
Doc ID: Note:401619.1 Type: TROUBLESHOOTING
Last Revision Date: 22-JUL-2008 Status: PUBLISHED

In this Document
Purpose
Last Review Date
Instructions for the Reader
Troubleshooting Details
Recommended Patch Level for using XML with Collections is 11i.IEX.H RUP #4 and XML Publisher 5.5 or above is the minimum but 5.6 is recommended.
There are two options when using XML to Print, Fax or Email:
Profile Option Setup for CUPS:
IPP Troubleshooting and Setup:
Convert PDF to PS:
CUPS with a UserID/Password:
Some of the most common errors in the XML Generate and Delivery concurrent process are:
Locating the Issue with IPP
Locating Issue with Writing to the Temp Directory:
References


Applies to:

Oracle Advanced Collections - Version: 11.5.10
Information in this document applies to any platform.

Purpose

This troubleshooting guide will help you troubleshoot XML Printing with Oracle Advanced Collections.

Last Review Date

March 20, 2008

Instructions for the Reader

A Troubleshooting Guide is provided to assist in debugging a specific issue. When possible, diagnostic tools are included in the document to assist in troubleshooting.

Troubleshooting Details

Recommended Patch Level for using XML with Collections is 11i.IEX.H RUP #4 and XML Publisher 5.5 or above is the minimum but 5.6 is recommended.

As of Release 11i.IEX.H, you can now send your correspondence using XML instead of One to One Fulfillment. In Release 12, XML will be the only option, as One to One Fulfillment will be removed. The addition of XML to Collections resulted in a new Concurrent Process (IEX: XML Generated and Delivery) and a few additional setup steps. Please be sure to review the section in the Oracle Collections Implementation guide that covers how to set this up and use the appropriate templates and profile options. Please keep in mind that the word fulfillment is used in these setups whether you are using XML or 1 to 1 Fulfillment. This word is not representative of your choice of delivery methods.

When you run the Workflow Background Process - IEX: Strategy Fulfillment Mailer to process your work items that require email, printing or faxing, a new concurrent process will automatically start, IEX XML Generated and Delivery concurrent process. This is the actual process that will email, fax or print the correspondence. This concurrent process will run once for each work item that needs to be processed. It processes one letter at a time.

You'll probably log an SR when the IEX XML Generated and Delivery process fails. However, the very first thing to check would be if you can see the OUTPUT (Correspondence Letter) via the View Output button on the request screen? If the OUTPUT or letter is viewable then the issue is not going to be with the Collections process, but rather with the setup of the printer, XML or XDO. In this case, you will need to work with the XML Publisher team to get the output to print, fax or email correctly.

If you do View Output and it's not correct or available, then the problem is with the Collections side and you should log an SR to the Collections team, letting them know you tried this test.

There are two options when using XML to Print, Fax or Email:

1. IPP - this requires an XDODELIVERY.cfg file in the $XDO_TOP/resource directory and special patching - 5004894 and 5120935. IPP is used as an MS (Microsoft) Solution. See below for setup and troubleshooting of the XDODELIVERY.cfg file.

2. CUPs - Common Unix Printing System (CUPS) is a free, server-style, IPP-based software that can accept IPP requests and dispatch those requests to both IPP and non-IPP based devices, such as printers and fax machines. See http://www.cups.org/ for more information about CUPS. See Setting Up Cups, page 11-36 for additional information. CUPS will actually convert the PDF file into a PS file and allow it to print on the printer or fax.

Do I Need to Configure xdodelivery.cfg if I'm Using CUPS to Handle my XML Printing?

Yes and No, if you are using CUPS to print, then you do not need the XDODELIVERY.cfg file, the application uses the profile options. Unless you setup CUPS with a username/password. Then you will need to use the XDODELIVERY.cfg file and include the username/password in the definition.

Oracle Collections sends the output to the CUPS server and the CUPS server converts the PDF to Postscript and then allows it to print correctly

Also, keep in mind that when setting up the printer, you MUST use Port 631. The other thing to keep in mind is if you are setting up a FAX server, then you must use the XDODELIVERY.cfg file.

The XDODELIVERY.cfg file is not something that Oracle supplies, this is a file that is manually created by you, the customer. A Sample XDODELIVERY.cfg file is documented in the XML Publisher User's Guide ex. B13817_06 and is supported by the XML Publisher Support team.

Make sure it is valid xml file and placed in $XDO_TOP/resource directory
You need to install pdftops utility for PDF to PS conversion for MS printing

NOTE: The following error in the IEX: XML Generate and Delivery concurrent process can be ignored if you are using CUPS without an xdodelivery.cfg file.

"Config file /erp/dev/apps/snoopyappl/xdo/11.5.0/resource/xdodelivery.cfg does not exist"

Profile Option Setup for CUPS:

Here is our example:

This is the URL to get to our sample CUPS printer -
http://celalnx7.us.oracle.com:631/printers/orlprt1_ipp

So based on this the profiles are set as follows:

IEX: Print IPP Host - celalnx7.us.oracle.com
IEX: Print IPP Port - 631
IEX: IPP Printer Name - /printers/orlprt1_ipp

The application will take these profile results and build the URL string that is used to get to the profile.

IPP Troubleshooting and Setup:

In order to use IPP for print/fax, you must setup the XDODELIVERY.cfg file. XDODELIVERY.cfg is validated by opening the file on a browser. This will show any errors on the xml file or if any xml tags are missing or incomplete.

Sample XDODELIVERY.cfg file:





ipp://devora8.us.oracle.com:631/printers/test1


ipp://reston2-prt-3199a.us.oracle.com:631
/usr/bin/pdftops {infile} {outfile}


rgmamersmtp.oracle.com
25



/tmp
true
"application/pdf"

Some rules:

1. CUPS will always have a URI that starts with HTTP:
2. Type for CUPS and IPP will always be ipp_printer
3. If using IPP, then you must have pdftops
4. The Port is always 631
5. IPP will always have a URI that starts with IPP
6. For Email - Server name is always mysmpt1

Collections selects the hostname from the printer URI and checks whether it is valid machine name I.E. it should translate into IP address. (you can ping machine at the UNIX/DOS prompt)

Convert PDF to PS:

You may need to specify the filter to convert PDF to postscript. Please find the pdftops command in the local machine (can be downloaded from internet if not available) and specify it in a full path (bold part) in the config file XDODELIVERY.cfg like following.

/usr/bin/pdftops {infile} {outfile}

IPP printing also requires filtercontentType to application/postcript

ipp://myserver:80/printers/Myprinter1/.printer
/usr/local/bin/pdftops {infile} {outfile}
application/postscript

CUPS with a UserID/Password:

If you want to add a Userid/Password on a CUPS server, you will need to supply the XDODELIVERY.cfg file with the information to pass:

The sample config file shows how the XDODELIVERY.cfg should be set as:

http://myprinter2.oracle.com:631/printers/myprinter2
basic
cupsuser
cupspwd

Some of the most common errors in the XML Generate and Delivery concurrent process are:

1. String Index -1, this is usually an issue with the printer/fax/email setup.

2. Sending process failed: no address to send, this usually means that there is an
issue with the contact. See Note 382837.1 for details

3. In order to use IPP you must have installed patch - 5584501 IEXXMLGEN : UNABLE TO PRINT IPP PRINTER AND XDODELIVERY.CFG from the XML Publisher team for version 5.5.0 of XML Publisher.

Locating the Issue with IPP

1. Please check the profile ‘IEX: IPP printer name’ matches the printer server name section in the XDODELIVERY.cfg file.

2. Confirm the printer is IPP ready:

A. With the following command from the prompt:

%telnet myprinter.oraclesoutsourcing.com:631

If it immediately returns with the message "telnet: Unable to connect to remote host: Connection refused", this means it is not accepting requests. If the prompt doesn't come back, it means it is waiting for the request, that's a good sign.

B. If step 1 works (the prompt doesn't come back for a while), try to setup the IPP on windows to see how it works. Here are the steps to complete this:

-From the remote Windows, choose 'Printers and Faxes' from the start menu.
-Double click 'Add Printer'
-Choose 'A Network printer' radio button and next
-Choose 'Connect to a printer on the internet...' radio button, type
http://test.oracleoutsourcing.com:631/printers/yourprintername
WHERE - test.oracleoutsourcing.com is the CUPS server name.
-Choose the printer driver and submit.
-If you could successfully create the printer, right click that printer and choose 'properties'
-Click 'Print Test Page' in the property dialog.

C. If step 2A fails, it means the printer is IPP enabled, but somehow it rejects IPP requests. Try Step 1 again, only this time use port 80 instead of 631 - %telnet myprinter.oraclesoutsourcing.com:80

D. If 'C' works (prompt doesn't come back for a while), try the same thing
as previously noted with the value http://test.oracleoutsourcing.com:80/printers/yourprintername (not 631).

E. If 'D' works (prompt doesn't come back for a while), please also try xml publisher with port 80.
Please don't forget the trailing slash. Also, if possible, turn on the Apps debug logging to 'STATEMENT' Note 264196.1 mode before running the request so that it shows all the debug info to the log, including IEX and XDO.

F. If it's the IPP printer, please try also followings.
ipp://test.oracleoutsourcing.com:631/
ipp://test.oracleoutsourcing.com:80/

G. f it's the IPP printer on Windows IIS and the name is "yourprintername" , please try followings.
ipp://test.oracleoutsourcing.com:631/printers/yourprintername/.printer
ipp://test.oracleoutsourcing.com:80/printers/yourprintername/.printer

Locating Issue with Writing to the Temp Directory:

Sometimes the IEX: XML Delivery and Generate process may have a problem locating the TEMP Directory to write to. In this case, you will have to use the xdodelivery.cfg file to define a TEMP directory even if you are using CUPS. Here is a sample:





ipp://xdodev2:631/printers/dummyPrinter



d:/tmp
true


2008/09/10

Note:390864.1:How to check which Techstack patchsets have been applied

Subject: How to check which Techstack patchsets have been applied
Doc ID: Note:390864.1 Type: HOWTO
Last Revision Date: 24-JUN-2008 Status: PUBLISHED

In this Document
Goal
Solution
References

Applies to:
Application Install - Version: 11.5.10
Information in this document applies to any platform.
Goal
How to check which Techstack patchsets have been applied
Solution

For Single Tier Release 11i :



SET head off Lines 120 pages 100
col n_patch format A65
col bug_number format A10
col patch_name format A10
spool atg_pf_ptch_level.txt
select ' atg_pf ' FROM dual;
/

select bug_number, decode(bug_number,
'3438354', '11i.ATG_PF.H'
,'4017300' ,'11i.ATG_PF.H.RUP1'
,'4125550' ,'11i.ATG_PF.H.RUP2'
,'4334965' ,'11i.ATG_PF.H RUP3'
,'4676589' ,'11i.ATG_PF.H RUP4'
,'5382500' ,'11i.ATG_PF.H RUP5 HELP'
,'5473858' ,'11i.ATG_PF.H.5'
,'5674941' ,'11i.ATG_PF.H RUP5 SSO Integrat'
,'5903765' ,'11i.ATG_PF.H RUP6'
,'6117031' ,'11i.ATG_PF.H RUP6 SSO 10g Integration'
,'6330890' ,'11i.ATG_PF.H RUP6 HELP'
) n_patch, last_update_date
FROM ad_bugs
WHERE bug_number
IN ( '3438354', '4017300', '4125550', '4334965', '4676589', '5382500', '5473858', '5674941', '5903765', '6117031', '6330890' );



For Multi Tier Release 11i :


set serveroutput on size 100000
DECLARE
TYPE p_patch_array_type is varray(100) of varchar2(10);
TYPE a_abstract_array_type is varray(100) of varchar2(60);
p_patchlist p_patch_array_type;
a_abstract a_abstract_array_type;
p_appltop_name VARCHAR2(50);
p_patch_status VARCHAR2(15);
p_appl_top_id NUMBER;

CURSOR alist_cursor IS
SELECT appl_top_id, name
FROM ad_appl_tops;

procedure println(msg in varchar2)
IS
BEGIN
dbms_output.put_line(msg);
END;

BEGIN
open alist_cursor;

p_patchlist := p_patch_array_type( '3438354'
,'4017300'
,'4125550'
,'4334965'
,'4676589'
,'5382500'
,'5473858'
,'5674941'
,'5903765'
,'6117031'
,'6330890'
);
a_abstract := a_abstract_array_type( '11i.ATG_PF.H'
,'11i.ATG_PF.H.RUP1'
,'11i.ATG_PF.H.RUP2'
,'11i.ATG_PF.H RUP3'
,'11i.ATG_PF.H RUP4'
,'11i.ATG_PF.H RUP5 HELP'
,'11i.ATG_PF.H.5'
,'11i.ATG_PF.H RUP5 SSO Integrat'
,'11i.ATG_PF.H RUP6'
,'11i.ATG_PF.H RUP6 SSO 10g Integration'
,'11i.ATG_PF.H RUP6 HELP'
);


LOOP
FETCH alist_cursor INTO p_appl_top_id, p_appltop_name;
EXIT WHEN alist_cursor%NOTFOUND;
IF p_appltop_name NOT IN ('GLOBAL','*PRESEEDED*')
THEN
println(p_appltop_name || ':');
for i in 1..p_patchlist.count
LOOP
p_patch_status := ad_patch.is_patch_applied('11i', p_appl_top_id, p_patchlist(i));
println('..Patch ' || a_abstract(i)
||' '||p_patchlist(i)||' was '||
p_patch_status);
END LOOP;
END IF;
println('.');
END LOOP;
close alist_cursor;
END;
/

For Single Tier Release 12 :



SET head off Lines 120 pages 100
col n_patch format A65
col bug_number format A10
col patch_name format A10
spool atg_pf_ptch_level.txt
select ' atg_pf ' FROM dual;
/

select bug_number, decode(bug_number,
'6272680', 'R12.ATG_PF.A.delta.4'
,'6077669', 'R12.ATG_PF.A.delta.3'
,'5917344', 'R12.ATG_PF.A.delta.2'
) n_patch, last_update_date
FROM ad_bugs
WHERE bug_number
IN ('6272680', '6077669', '5917344');


For Multi Tier Release R12 :

set serveroutput on size 100000
DECLARE
TYPE p_patch_array_type is varray(100) of varchar2(10);
TYPE a_abstract_array_type is varray(100) of varchar2(60);
p_patchlist p_patch_array_type;
a_abstract a_abstract_array_type;
p_appltop_name VARCHAR2(50);
p_patch_status VARCHAR2(15);
p_appl_top_id NUMBER;

CURSOR alist_cursor IS
SELECT appl_top_id, name
FROM ad_appl_tops;

procedure println(msg in varchar2)
IS
BEGIN
dbms_output.put_line(msg);
END;

BEGIN
open alist_cursor;

p_patchlist := p_patch_array_type( '6272680'
,'6077669'
,'5917344'
);
a_abstract := a_abstract_array_type( 'R12.ATG_PF.A.delta.4'
,'R12.ATG_PF.A.delta.3'
,'R12.ATG_PF.A.delta.2'
);


LOOP
FETCH alist_cursor INTO p_appl_top_id, p_appltop_name;
EXIT WHEN alist_cursor%NOTFOUND;
IF p_appltop_name NOT IN ('GLOBAL','*PRESEEDED*')
THEN
println(p_appltop_name || ':');
for i in 1..p_patchlist.count
LOOP
p_patch_status := ad_patch.is_patch_applied('11i', p_appl_top_id, p_patchlist(i));
println('..Patch ' || a_abstract(i)
||' '||p_patchlist(i)||' was '||
p_patch_status);
END LOOP;
END IF;
println('.');
END LOOP;
close alist_cursor;
END;
/

2008/09/09

Patch Issue

※在打Patch:5903765ATG_PF.H Rollup 6_11i時卡住,訊息如下:

patch log:
FAILED: file ademusr.sql on worker 1 for product ad username APPLSYS.

adwork001.log
Start time for statement below is: Tue Sep 09 2008 11:54:49
GRANT select on GV$LOGFILE to em_oam_monitor_role
AD Worker error:
The following ORACLE error:
ORA-01031: insufficient privileges
occurred while executing the SQL statement:
GRANT select on GV$LOGFILE to em_oam_monitor_role

解決方法:
1.登入DB User,sqlplus /nolog
SQL>connect DB / as sysdba
SQL>grant select on GV_$LOGFILE to system with grant option
SQL>connect system/systempwd.
SQL>grant select on GV$LOGFILE to em_oam_monitor_role.
2.登入AP User,啟動AD工具worker管理員
$adctlr -->2. Tell worker to restart a failed job-->1(指定work001重新啟動)


※在打Patch:5473858 ATG_PF.H Rollup 5_11i時卡住,訊息如下:
patch log:
FAILED: file ademusr.sql on worker 1 for product ad username APPLSYS.

adwork001.log
Start time for statement below is: Tue Sep 16 2008 19:02:49

GRANT select on WF_JAVA_DEFERRED to APPS with grant option

AD Worker error:
The following ORACLE error:

ORA-01720: grant option does not exist for 'SYS.AQ$_JMS_TEXT_MESSAGE'

Cause

Either Patch 5989593, AD: 11i: Remove "REVOKE ALL FROM PUBLIC" from ADGRANTS.SQL, was not applied, or adgrants.sql failed.

Patch 5989593 is a prerequisite for ATG_PF.H.RUP5, and when applying this patch, you are
requested to run adgrants.sql. The version of adgrants.sql supplied in the patch has this statement:
'grant EXECUTE on AQ$_JMS_TEXT_MESSAGE to APPLSYS with GRANT OPTION';
This gives you the grant option that is missing per the error message:
ORA-01720: grant option does not exist for 'SYS.AQ$_JMS_TEXT_MESSAGE'

解決方法:
1. Create $ORACLE_HOME/appsutil/admin on the database server.
2. Copy adgrants.sql (UNIX) from the patchtop(5989593)/admin directory to
$ORACLE_HOME/appsutil/admin. Or, copy adgrants_nt.sql (Windows) from
patchtop(5989593)\admin to %ORACLE_HOME%\appsutil\admin.
3. Set the environment to point to ORACLE_HOME on the database server.
4. Use SQL*Plus to run the script:
UNIX:
$ sqlplus /nolog
SQL> connect / as sysdba
SQL> @$ORACLE_HOME/appsutil/admin/adgrants.sql

2008/09/06

[转贴]一位营销总监的辞职信(非常经典)

【引言】

某企业,曾花了半年时间,到另一家著名企业去挖来了一位营销总监。在不到三个月的时间里,这位年仅26岁的营销总监就把工作搞得有声有色颇有成绩。然而,就在大家都普遍看好这位年轻的营销总监时,他却毅然决然地辞职而去。这是为什么呢?

【正文】

*总:

转眼间,我来公司已三个多月了。

回首三个多月以来,真是一言难尽。既有成绩,也有不足,但,还有很多的无奈和心酸。

也许下面很多话都比较尖锐,比较直接,也许有不少不成熟的地方,也许有不少欠考虑的地方,毕竟到公司的时间还不长。但我的目的只有一个,那就是:希望能对公司的发展对公司的发展有所裨益,希望公司的明天走得更稳健一点,走得更健康一点,走得更远一点。

这就够了。

革命是为了什么?

革命的目的是什么?

从历史和实践来看,革命无怪乎两个目的,一是推翻;二是改良。

那公司招我来的目的是什么呢?从进入公司的第一天开始,我就一直在问自己这个问题。这个问题,也许当初公司和我都没有认真去地考虑。但这个却是公司为什么请我来的根本点,也是我为什么到公司来的根本点。正因为没有考虑清楚,所以到今天,就出现一些原本就没有必要出现的问题。

终于直到现在,公司和我,虽然没有经过坦诚地沟通,但大家彼此却也终于知道:公司原本并不需要一个营销总监;公司也许更需要一个又一个的区域经理,一个又一个能够把烂市场起死回生的区域经理。

洪秀全,因为不知道革命的目的是什么,所以太平天国失败了;

孙中山也因为不知道革命的目的是什么,所以孙中山也失败了;

而只有***,清楚地知道,革命的目的就是:打土豪分田地,推翻旧社会,建立新社会,所以带领一帮兄弟,经过若干年艰苦卓绝的战争,终于实现了革命的目的。

而我们呢?

营销总监是做什么的呢?

虽然,这个问题很简单,但我们彼此并没有去认真深入地沟通和探讨。

就我个人来看,营销总监无非做三种事。

一是建立、规范和强化营销管理体系,职能侧重在于规范销售管理和品牌建设,但它往往是以牺牲短期业绩着眼于持续健康发展为前提。如果企业还没有超越生存基础目的的话,那聘请营销总监还并没有必要。这种营销总监才真的叫营销总监。

二是巩固和提升销售业绩,职能侧重在于市场开发和完成销售业绩,但它是往往以牺牲和透支市场为代价,搞掠夺式开发,与老板下达的业绩压力竞赛,尤其是在中国目前的这种企业环境里。这种营销总监应该叫销售总监才对,因为他背上背着两个指标:销量与回款。如果说我们公司还需要营销总监的,也只是需要这种营销总监。

三是建设品牌和公关策划,职能侧重于品牌拉动和公关开路,但它往往是来得快去得也快,“各领风骚三五年,你方唱罢我登台”。这种营销总监应该是市场总监才对,依*强势的品牌拉动和公关新闻策划,把市场在短期内轰起来,市场起来之后,能否守得住,就看企业的造化了,销售系统能否支撑得住是关键。

所以,对比我们公司的现状来看,我们并不需要营销总监,也许更需要一些区域销售经理。絮我直言。这正好也和当初公司邀请我加盟的意向是一致的。但在当初,让我来做区域经理,也许我是不会来的,因为我本身就在做着区域经理,而且做得很好。于是公司就以做营销总监来打动我(这只是我的猜测,是否真的是这样,我并不知道,也不想知道),因为我需要一个更大的平台来实现自己的职业理想。于是我就来了。但来了之后,公司在试用期间把我放在某一个区域蹲点使用,当然,顺理成章,我也就成了一个区域经理。

这一点,我能理解公司的良苦用心,但这种做法好不好呢?坦白地说,我感觉很不好,这不仅对我是一种伤害,对公司更是一种伤害。我敢肯定,我现在蹲点来*作**市场远远比公司直接招我来做**市场困难得多!

来自非市场的因素太多太多!

所以,不知道革命的目的来搞革命,只会把革命者和革命本身都弄得都很受伤,很被动。

说起这些,我不想去纠正我们的过去,过去的已经过去,重要的是面对将来。过去已经是这样的,我不想将来还是这样,公司和我都受不起这种时间的浪费。所以,我只想说明一点,以后,公司想让我做什么,就最好明确地告诉我,我觉得能干,我就干;不能干,就不干。

不要连革命的目的都没有搞清楚,就让我去干革命。

我们是盯着目标还是过程?

因为我们革命的目的不清楚,所以,我们革命的目标也就变化莫定。

刚来的时候,公司告诉我:咱们公司的管理很混乱,我们需要把管理规范起来,加强制度化建设。于是我就开始抓营销体系的制度化建设。但制度化建设有两个前提:一是需要时间;二是需要顶住业绩压力。然而,这两点我们都没有做到,就急急地否定了新的制度。

第一,任何一项新制度的出台,肯定会破坏现有利益既得者的平衡,所以会遭到他们的反对,这肯定是需要时间和磨合期的。

美的,推行事业部制,花了三年时间,三年销量没有提升,反而下滑。但现在,美的做得怎么样呢?主动求变,活下来,而科龙一直没变,却几近死了。

第二,我们的制度监督者,尤其是财务系统,却对新制度抱着一种非常呵求的态度和原则,好像,新制度一出台,他们什么就都万事大吉了,只要按制度进行监控,就可以了。从来不从财务的角度进行一些分析工作,只是按部就班地控制;从来不从财务设计的角度进行一些反思工作,只是抓事后追究和处罚;如果是这样,那财务工作就太好做了。

第三,实行新制度后,一看,哎,销售与以前相比,没有提升,反而下降,所以新制度也不过如此嘛!那我们有没有分析一下,是什么原因导致这样的结果呢?是新制度的原因嘛?还是有其它因素?我们有没有深入地分析一下是市场因素和非市场因素?没有啊!

第四,实行新制度后,制度中的每个人都得调整,牺牲短期业绩不可避免的,

我们所能做的,就是把这种时间尽可能地缩短,而不是一点时间都不给。**分公司推行新制度,是一个月时间都没给够。

第五,在新制度的试行过程中,作为制度的设计者,必须时刻跟进,随时调整,而公司并没有给我这个时间(我得去别的区域走访市场,远程跟进只能是不解近渴),却让制度的监督者来跟踪,可想而知,不能跟着情况的变化而调整的新制度却还得遭遇制度监督者的呵求(不懂销售的监督,纯从财务角度考虑),会是一个什么结果。

在上述五种因素的制约下,新营销体系流产是自然而然的,也是情理之中的。就是再好的制度,也是同理。

大家都在盯着过程,就忘了我们的目标。

就像一个故事讲的一样:有一个父子俩,在雪地上比赛走路,看谁走得直又快。父亲看着终点,一步一个脚印,做得既直又快,儿子看着自己走的每一步,走一步回头看一步,结果是又慢又弯曲。

其实,*总,您的心情我完全以理解,您也并没有错。

也许错就错在我们实行新制度的基础还不成熟,因为对于我们目前来说,太需要的是业绩,而不是管理。

但我们的这种做法,让我害怕,我再不敢去推出了一些新的东西啦!因为我这样做的结果,好比是我拿出更多的绳子让人往我脖子上套一样!

而我们千变万化的目标调整,却也是让我无所适从。

一会儿,是完善新制度,马上就能适用全国;一会儿是走访区域市场,马上让它起死回生或者在销量显著上升;一会儿,又让蹲点**区域上海,兼顾**大区;一会儿,又让我就只做**市场?下一步,又不知道是什么?

我成什么啦,我?

短短三个月,就让我来做这么多事情,能有一个结果吗?就是三个月,能做好一件事情,都是不容易的。

于是乎,在这种变化的目标中,自然而然的,从关注我的目标(目标太多变化太快根本无法关注)就变成盯着我的过程啦!

没有目标的过程,又会是什么样的呢?我急啊?我有力都使不上?

而这本身,就是一种本末倒置。于是乎,很自然,我每一件事,都无法抓出一个合理的很好的结果来。

体系的力量在哪里?

为什么前几年风光的国内家电企业,尤其是彩电行业,为什么到现在却整体亏损?

为什么前几年风光的国内保健品企业如此NB,为什么现在却生意惨淡?

为什么前几年默默无闻的外资家电企业,现在却逐渐摆脱困境从幕后走向前台?

……

不是别的,就是体系营销作战的作用。

这些从打一个电话就可知道:

*总,你可以以一个普通人的身份,随便拔打我们某一个职能部门或驻地分支机构的电话,随便了解一些情况,保证有很多人会说,“这个我不知道”“这个不是我管的”“那个你找**吧”“那个**现在不在”……

前段时间,中国质量万里行的一个朋友给我来电话说,前段时间,中国质量万里行在搞各个行业的明查暗访活动,其中抽到了我们公司。当时,抽查了总部的800免费电话和北京的服务电话,是以询问公司总部的地址为查询内容,但得到的答复很不令人如意。北京接电话的就很不客气地回答不知道,总部800电话也是很长时间才有人接,接了电话后也是说不知道。当初,我还不相信,于是我自己亲自试了一次,很让人生气。于是,一方面,我赶紧通知了总部和北京加强这一块;另一方面,赶紧与我那个朋友沟通,叫他们想办法一定不要公布了,免得影响不好。经过一番周折,花了不少关系和资源,最后终于搞定了。

这些,我没有说,又有谁知道呢?(其实,我是个很能说的人,只不过,现在我更加严格要求自己做了之后再说,甚至做了都不说!)

我想:

如果我们每个人都能把工作当成自己的家庭一样经营,尽心尽力,还有什么搞不好的呢?

如果我们每个人都能像天堂里的人一样,相互帮助,我们还有什么搞不定的呢?

如果我们每个体系的人都能这样的开展工作,那还有什么难题解决不了的呢?

*总,还是回归到当初您对营销系统的要求:业绩增长50%,利润提升50%。

但这需要哪些前提、充分和必要条件呢?

如果我们的市场部门、生产部门、财务部门和行政部门等支持配套职能部门的职能服务意识和服务水平及能力都能同比增长50%,我们可以设想,完成上述目标还有问题吗?我敢保证,完成上述业绩绝对没有问题;

相反,如果我们的市场部门、生产部门、财务部门和行政部门等支持配套职能部门的职能服务意识和服务水平及能力都能同比增长不大或者下滑,就算我们销售系统的人员累死一批又一批,又能怎么样呢?那也很难保证能够完成上述业绩啊。

也许是销售部门的业绩很好用数字和指标来说明,于是大家都习惯于用这数字来往销售部门身上套。这是对的。我想每一个做销售的,应该也能接受。但是,我们其它部门呢?

先说我们财务部门:

不是说分支机构的报告二十四小时内必须回复吗?但我在**区域蹲点的这段时间里,几乎很少看到过报告是在二十四小时回复的?绝大部分是必须催了几次之后才能看得到啊!我的报销单是在两个月后催了多少次之后才冲掉的啊!

请问全国这几个分支机构,有哪个分支机构没有碰到过财务部门开错增值税票之事?而且是经常开错?

几乎所有分支机构的库存的财务数据都有问题,那是不是我们的财务制度设计有问题呢?光来事后追究处罚能顶个屁用?

我们的财务还只停留在基本的记帐的水平上,从目前来看,可能连记帐都会出问题,更别谈辅助决策?我们每一个新品的推出、每一个特价机的推出、每一个老款的打折,是否都经过了财务的科学计算?是否都有明确的数据分析,告诉公司决策层,这个新品可以推出还是不要推出?这个特价机可以搞还是不可以搞?这个老款可以打折还是不可以打折?都没有啊!

薪酬标准的制定,财务部门能拿出分析数据吗?没有啊!

……

再说生产部门:

我们产品的生产成本为什么居高不下?为什么人家的生产成本却只有不到我们的一半(还开税票),而我们却做不了?

我们产品的质量为什么老是出一些低级的错误?比如:放错了开孔板?或者开孔板的尺寸不对?安错了灯泡?接上电源灯不亮等等?

我们的型号很多,却为什么总是青黄不接呢?老的没有了,新的还没有出来?

我们的型号不少,但我们产品的生命周期却很短?匆忙上市又匆忙退市?

再说……

不说了。

原本我们的力量就很薄弱,原本我们的资源就很分散,我们需要把薄弱的力量分散的资源集中结合起来使用,我们才可以干点事情!否则,我们只可能是做历史的匆匆过客,被市场无情地抛弃。

体系的力量是惊人的是巨大的,孤军作战只会是让“英雄出师未捷身先死”;各自作战只会是互相拆台只会加速企业的灭亡!

华为有两句话说得很好:

“我们提倡学雷峰,但绝不能让雷峰吃亏!”

“我们提倡学焦裕禄,但绝不能让焦裕禄早逝!”

但我们呢?

企业文化的阻力可以杀死人

曾经有人这么说,文化的激励作用是巨大的,是从内到外的,它会渗透组织成员的每一根毛细血管;与此同时,文化的力量杀人是无形的却也是最厉害的,它可以像温水煮青蛙一样。

刚来公司时,记得有人提醒我“石总,您来之后,可要小心啊,公司里面可到处都是地雷啊,稍不小心,中了地雷还不知道怎么回事呢?”

记得我当时说过一句话,“只要我是为公司着想,对工作负责,不徇私,我想,公司领导会理解和支持的。所以,我说,就是前面有万丈深渊,有地雷阵,我也一样地勇往无前”。

然而,时至今日,我发现,我想错了。

却正如某人所说。

而我呢,却好象“出师未捷身先死”“伤痕累累”。

也许,这就是企业文化的力量杀人于无形中。

我想,如果我的引进能换来公司的企业文化的提升,这未尝也不是件好事。这关键就是*总您的英明决策啊。

我想,有了*总您的英明决策,有了大家对未来方向的坚定认识,我们上一个台阶是可能的,也是必然的。

正如联想的柳传志所说,做企业,就像撒土一样,撒一层土,把它夯实,再撒一层土,再把它夯实,层层撒土,层层夯实,企业就是这样的炼成的!

我们公司,又何尝不是如此,我们只有不断地引进专业人才,通过专业人才的引进,带来一股又一股清新的职业习惯和氛围,不断地融合和聚合,才能形成一种良好的积极向上的企业性格和文化。

而我们呢?

留不住外来人才,留不住新聘人才,永远就是那股旧有的习惯和势力在坚守阵地,就算是有些新鲜空气偶然吹进来,但最后还是被“吹”走了。

只有新进力量大或强到足以抵抗或阻止旧有势力的进攻或蔓延,新旧文化才可以和平共处或相互融合共同成长。

企业,也许永远就是在那两种文化中甚至更多文化的磨合中成长进步。任何一方的力量都不能足够强或太弱,否则,就是一边倒。文化的绝对垄断性就会表现得不可一世,文化就会杀人于无形中。

记得我刚到下面的分支机构出差时,听到很多负面语言,说什么“我到一个市场一言不发,临走时,就说你就这么干吧”,说什么“我到市场后,就批评大家,说什么这个做得不对,那个做得不对”,说什么“我专挑豪华宾馆住宿,住一晚就是三四百”,说什么“我不像个领导样子,与大家都打成一片”,说什么……,反正,什么说法都有,什么语言都有,真是的,让人哭笑不得!这哪是我啊,我是这样的吗?

别人不了解我,*总您应该是比较了解我的啊!

也许一个人这么说,你会根本不相信;如果两个人也都这么说,你还是不会相信;但如果有十个人这么说,你就要考虑是怎么回事了;如果大家都这么说呢,你还会坚定立场吗?

如果答案是YES,我想,我终此一生为您服务,也是无怨无悔的。

然而,有此事情的变化和调整,我不知道是您的意思还是大家的意思?

不管怎么样,我觉得,作为公司高层领导(营销总监应算是高层领导)的工作调整,公司至少应该事先和我沟通或打声招呼吧!然而,事实上,除了*总裁助理跟我谈了一下之外,就没有其它的任何沟通啦!就算我是一个普通员工,也应该有最基本的知情权吧!我想,这也是组织对个体的最起码的尊重啊!

可是我们有吗?

哪有这么随意的啊?

就算是捏面团,也还需要先洗一下手啊,然后还需要用一下力啊!

还有一些事情,更是让人无法接受。

根据公司的规定,我的费用一部分是有标准定额的,一部分是实报实销的。在执行过程中,我所有的费用都没有超过公司规定的标准;而且,事实上,不仅没有超过公司的标准,反而是大大地低于公司标准。

就拿大家反应的住宿费来说吧。为了节约费用,我基本都是找朋友关系,住宿是尽可能地便宜(我住得最低的是我住宿标准的三分之一,最高的是一半,豪华宾馆之说从何而来?);发生的一些市内交通费(打的费)也是实属必要:去机场、业务洽谈、客情沟通等,在这种时候时间和效率就摆在了第一位。但是,这些费用的发生,当初聘用协议是明文规定实报实销的。但现在却还要打报告才能核销?而且,公司在审核这些费用时,还要打电话到当地分支机构去查询,了解我是不是花了这些市内交通费???

*总,我会为了这几十块钱的东西而这样干吗?有了这几十块钱我能富了吗?没有这几十块钱我能穷了吗?

*总,信任啊,最基本的信任都没有啦!

这是一个公司对其营销总监的最基本的信任吗???就算是算作区域经理,也只有这么点信任吗?

在这种文化下,我们怎么能好好地干好工作啊!

家族制还是家族化?

家族制,到底好还是坏,没有一个定论。把企业不断地做强做大了,就是好的;把企业做小做垮了,就是不好的。

所以说,能适应并促进企业发展的,才是好的。

而我们呢?

我们在家族制这个问题上,却有许多值得商榷的地方。

*总,除了您之外,还有许多您的亲戚在企业里,而且都在某一方面任着高职。不是说他们做得不好,也不是说他们仗势压人,但有一点是肯定的:*总,您不能保证他们与您都是抱着一样的想把企业做强做大的想法,哪怕暂时牺牲些局部利益甚至个人利益,您能做得到,他们不全能做得到。

在这点上,应该说方太等家族企业是做得比较成功的。

方太最彻底地执行两个原则:

1、口袋理论。只有自己与儿子的口袋是同一个口袋。也就是说,除了亲生儿子外(只适用一个儿子,不适用多个儿子)别的任何亲戚都不能进入这个企业。要么,就单独给他另外一个企业,让他自己去折腾去。

2、家族制而非家族化。允许家族的人进入自己的企业,但不是家族的每个人都可以进入自己的企业,符合口袋理论的才可以进入。这就严格控制了裙带关系的产生。

而我们呢?

第一:在这点上,我们公司,虽然目前没有大的问题产生(还好,公司现在还可以控制他们,一旦有一天,他们无法受控时,那对企业绝对是致命的),但无疑给企业的发展壮大带来了很大隐形炸弹和无形障碍,这些问题迟早会爆发,而且一旦爆发起来,那就是不可收拾的。

第二:由于这些人的存在,给公司塑造一种公开公平公正的企业文化带来了很大的阻力和困难。也许他们都做得很好,但大家对这些“皇亲国戚”还是带着一种另外的眼光在审视,这自然而然地对他们产生一种“偏斜”和“偏差”,从而自然而然地对树立企业良好的“三公”文化带来了破坏性。

第三:在创业初期,大家可以共苦,但过了创业期后,大家能否相安无事就很难说了;而且,在渡过创业期后,怎么合理分配胜利果实,则又会是一场“剪不断理还乱”的难断家务;而且,更有甚者,拿了桌子上面,又开始拿桌子下面的。

这就是家族化的问题。

公司能有明天吗?

问自己这个问题时,心中一种说不清的感觉。

从内心期望来说,我们当然希望公司越来越好,越来越发达,越来越兴旺,越来越强大,越来越NB。

然而,这只是我们的一厢情愿。

我们有这个充分条件吗?

我们有这个必要条件吗?

我们有实现这个目标的资源积累和赢利模式吗?

我们有实现这个目标的制度保障和组织架构吗?

我们有实现这个目标的人才储备和人才机制吗?

……

然而,这些我们好象都没有啊!要有,也都只是短板。

虽然,我们有一个还算不错的老板,但没有上述这些条件或条件不足,没有很好的组织架构和人才机制,也就没有强有力的管理水平和执行水平,所以这些因素就构成我们企业前景的困扰因素。

但是,也并不是说,没有上述因素,我们的明天就很暗淡。

应该说,我们也有自身的很多优势:

领导团队的事业心;基层员工的责任心;行业本身的发展前景以及目前市场经济的发展空间等,这些都构成了我们能够追赶美好明天的因素,只要我们把这些优势发挥到极致,把我们的劣势变为优势,我们的明天一定会更美好。

*总,所有这些,也许很不中听,也许很逆耳,也许很打击人,但有三点是非常肯定的:

1、我不是刻意去中伤什么,也不是刻意去评论什么(我是最不屑那么做的人,来公司这么长时间了,我是第一次也许是最后一次),我只是想让*总知道和明白,我们需要改善和加强的地方太多了,不然,我们谈何公司的明天啊?

2、我本身确也存在很多问题,对自己的定位上、在心态的把握上、与大家的沟通上,我有很多做得非常不够的地方,那是我该深刻检讨的方面,也是急需提高的方面;

3、我对公司的关注胜过一切,我非常相信*总您能把这个企业带向成功走

向未来,所以,终于,一鼓作气说了这么多。但是,如果你不能明辨是非、分清黑白,依然是自以为是、言而无信,那么你想把企业搞起来,几乎是很难的。

说了这么多,目的只有两个:第一,告诉您我准备辞职和为什么辞职?第二,告诉您企业要做强做大,上述所说的是不可忽略的。是否有用,全在于您怎么看了。

当然,您我都不用担心也不必担心,地球离了谁都照转。

同时,附上我的辞职报告,请予以批准。

如何用XML Publisher繪製圖表

好一陣子沒碰XML Publisher了,最近有個任務需求,需要產出報表中帶圖表(長條圖、折線圖…),直覺就又想到這個老夥計了。假設要作個部門人數趨勢圖,首先準備一個Table,存放所需的部門每月人數信息。

Table aftest ( yearmonth ,employee )


















建立Oracle Reports 程式,當作XML Publisher的Data Source只要在Data Model填寫SQL即可,不需要創建Layout。然後將程式上傳至Oracle EBS指定的路徑下。















在Oracle EBS上註冊該報表,注意Output要改為 XML 喔。















提交運行剛才建立的報表,執行成功後,點擊View Output,可以得到一個XML文件。將此文件保存放在本機端。例如:AFTEST.XML

打開MS Word,用 XML Publisher Desktop 工具,進行建立模版。

1.資料->載入XML資料,選擇剛才保存的AFTEST.XML


2.插入->圖表,設定圖表信息


3.先以.rtf格式保存。AFTEST.rtf

4.預覽->PDF,以PDF格式預覽看看,結果是否符合。




登入Oracle EBS的XML Publisher Adminstrator權限,

1.註冊Data Definitions
XML Publisher Adminstrator->Data Definitions->Create Data Definition


2.註冊Templates
XML Publisher Adminstrator->Templates->Create Template
這裡需要個Template File就是剛才保存的AFTEST.rtf


回到Oracle EBS再次提交這支報表AFTEST。

哎呀,報錯了........

+---------------------------------------------------------------------------+
xxxxxxxxxxx: Version : UNKNOWN - Development

Copyright (c) 1979, 1999, Oracle Corporation. All rights reserved.

AFTEST module: AFTEST
+---------------------------------------------------------------------------+

Current system time is 06-SEP-2008 22:01:26

+---------------------------------------------------------------------------+


+-----------------------------
| Starting concurrent program execution...
+-----------------------------


APPLLCSP Environment Variable set to :

XML_REPORTS_XENVIRONMENT is :
/xxxxxxxxxora/8.0.6/guicommon6/tk60/admin/Tk2Motif_UTF8.rgb

XENVIRONMENT is set to /xxxxxxxxxxora/8.0.6/guicommon6/tk60/admin/Tk2Motif_UTF8.rgb


Current NLS_LANG and NLS_NUMERIC_CHARACTERS Environment Variables are :
American_America.UTF8

'.,'

Spawned Process 6204
REP-3000: Internal error starting Oracle Toolkit.

Report Builder: Release 6.0.8.25.0 - Production on Sat Sep 6 22:01:27 2008

(c) Copyright 1999 Oracle Corporation. All rights reserved.

Enter Username:
+---------------------------------------------------------------------------+
Start of log messages from FND_FILE
+---------------------------------------------------------------------------+
+---------------------------------------------------------------------------+
End of log messages from FND_FILE
+---------------------------------------------------------------------------+


+---------------------------------------------------------------------------+
Executing request completion options...

+------------- 1) PUBLISH -------------+
Beginning post-processing of request 265146 on node xxxxxxx at 06-SEP-2008 22:01:33.
Post-processing of request 265146 failed at 06-SEP-2008 22:01:33 with the error message:
One or more post-processing actions failed. Consult the OPP service log for details.

看來是在XML Publisher產生時出錯了,得檢查Output Post Processor的Logfile。

進入System Administrator權限,Concurrent->Manager->Administer->Output Post Processor->Process->Manager Log

@_@" 呃~~這是什麼問題呀?? 可惡,就差這最後一步就完成了。

我的環境是:Oracle EBS:11.5.10.2 Database:9.0.2.8 XML Publisher 5.0

[9/6/08 10:01:33 PM] [2046:RT265146] Executing post-processing actions for request 265146.
[9/6/08 10:01:33 PM] [2046:RT265146] Starting XML Publisher post-processing action.
[9/6/08 10:01:33 PM] [2046:RT265146]
Template code: AFTEST
Template app: xxxxxxxx
Language: en
Territory: US
Output type: PDF
[9/6/08 10:01:33 PM] [UNEXPECTED] [2046:RT265146] java.lang.ArrayIndexOutOfBoundsException: 0
at oracle.apps.xdo.common.image.ImageReader.checkFormat(ImageReader.java:107)
at oracle.apps.xdo.common.image.ImageReader.analyze(ImageReader.java:144)
at oracle.apps.xdo.common.image.ImageReader.load(ImageReader.java:310)
at oracle.apps.xdo.generator.pdf.PDFGenerator.createPDFImageReference(PDFGenerator.java:1760)
at oracle.apps.xdo.generator.pdf.PDFGenerator.getImage(PDFGenerator.java:1848)
at oracle.apps.xdo.template.fo.area.AreaTree.getImage(AreaTree.java:507)
at oracle.apps.xdo.template.fo.area.InstreamForeignObjectArea.(InstreamForeignObjectArea.java:40)
at oracle.apps.xdo.template.fo.elements.FOInstreamForeignObject.doLayout(FOInstreamForeignObject.java:80)
at oracle.apps.xdo.template.fo.elements.FOBlock.doLayout(FOBlock.java:180)
at oracle.apps.xdo.template.fo.elements.FOBlock.doLayout(FOBlock.java:142)
at oracle.apps.xdo.template.fo.elements.FOBlock.doLayout(FOBlock.java:76)
at oracle.apps.xdo.template.fo.elements.FOFlow.doLayout(FOFlow.java:76)
at oracle.apps.xdo.template.fo.elements.FormattingEngine.startLayout(FormattingEngine.java:148)
at oracle.apps.xdo.template.fo.elements.FormattingEngine.run(FormattingEngine.java:95)
at oracle.apps.xdo.template.fo.FOHandler.endElement(FOHandler.java:238)
at oracle.xml.parser.v2.XMLContentHandler.endElement(XMLContentHandler.java:196)
at oracle.xml.parser.v2.NonValidatingParser.parseElement(NonValidatingParser.java:1212)
at oracle.xml.parser.v2.NonValidatingParser.parseRootElement(NonValidatingParser.java:301)
at oracle.xml.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:268)
at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:149)
at oracle.apps.xdo.template.fo.FOProcessingEngine.process(FOProcessingEngine.java:266)
at oracle.apps.xdo.template.FOProcessor.generate(FOProcessor.java:959)
at oracle.apps.xdo.oa.schema.server.TemplateHelper.runProcessTemplate(TemplateHelper.java:1766)
at oracle.apps.xdo.oa.schema.server.TemplateHelper.processTemplate(TemplateHelper.java:1277)
at oracle.apps.fnd.cp.opp.XMLPublisherProcessor.process(XMLPublisherProcessor.java:229)
at oracle.apps.fnd.cp.opp.OPPRequestThread.run(OPPRequestThread.java:153)

[9/6/08 10:01:33 PM] [2046:RT265146] Completed post-processing actions for request 265146.

Note:362496.1:How to Determine the Version of Oracle XML Publisher for Oracle E-Business Suite 11i and Release 12

轉自Metalink:Note:362496.1

Goal

How can the current version of Oracle XML Publisher on an Oracle E-Business Suite environment be determined? This document applies to both the Oracle E-Business Suite 11i and the Oracle E-Business Suite Release 12.

Solution

There are various ways to find the version of Oracle XML Publisher.

1. Based upon an output file generated by XML Publisher

  • PDF Output
    1. Open the PDF document in Adobe Reader
    2. Open the menu File
    3. Select Document Properties
    4. Click on the tab Description
    ==> The property ‘PDF Producer’ will show e.g. Oracle XML Publisher 5.6.3.
  • RTF Output
    1. Open the RTF document in Microsoft Word
    2. Open the menu File
    3. Select Properties
    4. Click on the tab Summary
    ==> The property ‘Comments’ will show .e.g. Generated by Oracle XML Publisher 5.6.3
  • HTML and Excel output
    1. Open the document in Notepad (or any other plain text editor)
    ==> line 4 or 5 will show e.g. Generated by Oracle XML Publisher 5.6.1
One option to generate an output file is via the Preview functionality which is available under the XML Publisher Administrator responsibility. Navigation path :
  1. Responsibility: XML Publisher Administrator
  2. Function: Templates
  3. Select a Template for which a Preview Data file has been uploaded before
  4. Click on the Preview icon
  5. Save the PDF to the client PC
  6. Determine the version either by the above instructions OR provide the PDF file to Global Customer Support..

2. Based upon the applied patches

Every patch that is installed on the system will have a record in the table AD_BUGS. Either one of the following SQL statements can be used to determine which Oracle XML Publisher patches are applied, depending on the release of Oracle Applications that is installed.

2.1. Oracle E-Business Suite 11i

The following SQL statement will show which patches and thus with version of Oracle XML Publisher is installed on an Oracle E-Business Suite 11i environment:

SELECT DECODE (bug_number

, '3554613', '4.5.0', '3263588', 'XDO.H', '3822219', '5.0.0'

, '4236958', '5.0.1', '4206181', '5.5.0', '4561451', '5.6.0'

, '4905678', '5.6.1', '5097966', '5.6.2', '5472959', '5.6.3'
) PATCH, bug_number
FROM ad_bugs
WHERE
bug_number IN
('3554613', '3263588', '3822219', '4236958', '4206181'

, '4561451', '4905678', '5097966', '5472959');

PATCH BUG_NUMBER
----- ------------------------------
XDO.H 3263588
4.5.0
3554613
5.0.0 3822219
5.5.0 4206181
5.0.1 4236958

2.2. Oracle E-Business Suite Release 12

The following SQL statement will show which patches and thus with version of Oracle XML Publisher is installed on an Oracle E-Business Suite Release 12 environment:

SELECT DECODE (bug_number, '4440000', '5.6.3') PATCH, bug_number

FROM ad_bugs
WHERE bug_number IN('4440000');

PATCH BUG_NUMBER
----- ------------------------------
5.6.3 4440000

Note: Patch 4440000 is in fact the base release of the Oracle E-Business Suite Release 12. It is provided via the Oracle E-Business Suite Applications Release 12.0 Media Pack and not as a standalone patch.

3. Based upon the file version of the MetaInfo.class

The version of a specific Java Class has a one to one relationship with the currently installed version of Oracle XML Publisher. This method is suitable for both Oracle E-Business Suite 11 and Release 12.

$ adident Header
$OA_JAVA/oracle/apps/xdo/common/MetaInfo.class
$Header MetaInfo.java 115.19 2004/11/30 02:45:52 tsuzuki noship $

The following matrix shows the corresponding XML Publisher version for each version of MetaInfo.class:

Metainfo.class XML Publisher Patch Reference Included in ...
... for the Oracle E-Business Suite Release 12
120.6 5.6.3 Patch 4440000 Note 422508.1
Release 12 (12.0.0)

... for the Oracle E-Business Suite 11i
115.28 5.6.3 Patch 5472959 Note 422508.1 11i.ATG_PF.H.delta.5
115.27 5.6.2 (core)
Patch 5097966 Note 367394.1
115.26 5.6.1 Patch 4905678 Note 357308.1
115.24
5.6.0 Patch 4561451 Note 337999.1
115.22 5.5.0 Patch 4206181 Note 316447.1
115.21 5.0.1 (core)
Patch 4236958

115.19 5.0.0 Patch 3822219 Note 295036.1 11.5.10.1 / 11.5.10.2 / 11i.ATG_PF.H.RUP3 and RUP4
115.15 4.5.0 (XDO.H) Patch 3263588 Note 269605.1 11.5.10
115.12 4.3.0 (core)
Patch 3395631


In order to upgrade to a newer release, there's no requirement to apply all previous versions. For example, if the current version is Oracle E-Business Suite 11.5.10, then one can directly upgrade to XML Publisher 5.6.3 by following the instructions as described Note 422508.1.

Note: The 'core' patches provide ONLY the XML Publisher core classes and do not upgrade e.g. the User Interface (UI) within the Oracle E-Business Suite. The 'core' patches only offer specific bug fixes on top of the previous version, e.g. XDO 5.6.2 is a core patch on top of 5.6.1. Is NOT recommended to apply ONLY a core patch as it may break the UI.