锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久亚洲精品国产精品,亚洲精品午夜国产va久久,亚洲精品国产国语http://www.tkk7.com/adamduan/category/50484.htmlzh-cnWed, 28 Dec 2011 09:17:57 GMTWed, 28 Dec 2011 09:17:57 GMT60[IBM]鏋勫緩杞婚噺綰?Batch 妗嗘灦澶勭悊 DB2 Content Manager 8.3 澶ч噺鏁版嵁瀵煎叆http://www.tkk7.com/adamduan/archive/2011/12/28/367430.html孌墊棴孌墊棴Wed, 28 Dec 2011 09:16:00 GMThttp://www.tkk7.com/adamduan/archive/2011/12/28/367430.htmlhttp://www.tkk7.com/adamduan/comments/367430.htmlhttp://www.tkk7.com/adamduan/archive/2011/12/28/367430.html#Feedback0http://www.tkk7.com/adamduan/comments/commentRss/367430.htmlhttp://www.tkk7.com/adamduan/services/trackbacks/367430.htmlhttp://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0908luyx/

鏈枃浠嬬粛浜嗗浣曚嬌鐢ㄥ綰跨▼鏉ユ瀯寤鴻交閲忕駭 Batch 妗嗘灦錛屽皢澶ч噺鐨勬暟鎹縼縐誨埌 IBM DB2 Content Manager 8.3 涓傞氳繃鏈枃鐨勫涔狅紝璇昏呭彲浠ヤ簡瑙e浣曢氳繃浣跨敤澶氱嚎紼嬭皟鐢?IBM DB2 Content Manager API 鏋勫緩鐨勬鏋舵潵鍚姩錛屾殏鍋滐紝鎭㈠錛屽仠姝紝鏀劇紦絳夋搷浣溿?/p>

鍦ㄧ敤 API 瀵煎叆澶ч噺鏁版嵁鐨勮繃紼嬩腑錛屽鏋滄病鏈夋鏋跺緢闅炬湁鏁堢殑瀵規暣涓繃紼嬫帶鍒訛紝浠呬粎閫氳繃鏃ュ織鏉ュ垎鏋愯В鍐抽棶棰樻繪槸寰堟氮璐規椂闂達紝騫朵笖鏁堢巼涓嶅お鐞嗘兂銆?/p>

鏈枃鐨勫唴瀹規斁鍦ㄤ簡濡備綍浣跨敤澶氱嚎紼嬪拰閰嶇疆鏂囦歡鏉ユ瀯寤?Batch 妗嗘灦鏉ュ鐞嗗ぇ鏁伴噺瀵煎叆鐨勯棶棰樸?/p>

闅忕潃 IBM DB2 Content Manager錛堢畝縐?IBM CM錛変駭鍝佺殑涓嶆柇鎴愮啛錛岃秺鏉ヨ秺澶氱殑鍐呭綆$悊緋葷粺闇瑕佽縼縐誨埌 IBM CM 涓潵錛岃繖浜涢渶瑕佽縼縐葷殑鏁版嵁閫氬父棣栧厛鎶婄粨鏋勫寲鐨勫唴瀹瑰鍒版枃鏈枃浠朵腑錛屼笌涔嬬浉瀵瑰簲鐨勫浘鍍忓拰 pdf 鏂囦歡閫氬父鏀懼湪瀵瑰簲鐨勬枃浠跺す涓紝鍥懼儚鍜?pdf 瀵瑰簲鐨勬枃浠跺す璺緞涔熼氬父瀛樻斁鍦ㄦ枃鏈枃浠朵腑錛岀劧鍚庤縼縐葷▼搴忛亶鍘嗘枃鏈枃浠訛紝鎶婂搴旂殑 Item 榪佺Щ鍒?IBM CM 涓傝繖浜涢渶瑕佽縼縐葷殑鏁版嵁閫氬父閮芥湁鍑犵櫨 G錛屽浣曟湁鏁堢殑鎺у埗榪佺Щ榪囩▼鏄竴涓緢澶х殑鎸戞垬錛屽洜姝ゆ垜浠繀欏繪瀯寤轟竴涓交閲忕駭鐨?batch 澶勭悊妗嗘灦鏉ユ帶鍒舵暣涓暟鎹殑榪佺Щ鍛ㄦ湡錛岃褰曞鐞嗚繃紼嬩腑鐨勯敊璇紝淇濊瘉鏁版嵁鐨勪竴鑷存с?/p>

鍚屾椂錛屽湪鐢?API 瀵煎叆鏁版嵁鐨勮繃紼嬩腑錛岃瀵煎叆鏁版嵁鎬繪槸鍗冭竟涓囧寲錛屾棤鏁堢殑鏄犲皠瀵煎叆鏁版嵁鍜?DB2 Content Manager 鐨勯」錛屽鑷村伐浣滃彉寰楀鏉傦紝鍚屾椂浣跨殑璁捐鍜屼唬鐮佸啑浣欙紝騫朵笖浣塊噸鐢紝緇存姢鍜屾墿灞曞飽姝ヤ負鑹伴毦銆?/p>

涓轟簡鍏嬫湇鎵鎻愬埌鐨勬寫鎴橈紝榪欎釜 batch 妗嗘灦蹇呴』瑕佹湁浠ヤ笅鍔熻兘錛?

  • 鐢ㄦ埛鍑轟簬涓嶅獎鍝嶇敓浜х幆澧冩ц兘鐨勮冭檻錛屽彲浠ユ殏鏃跺仠姝㈡暟鎹殑榪佺Щ錛屾垨鑰呭噺緙撹縼縐誨鐞嗙殑棰戠巼錛屽嵆妗嗘灦蹇呴』鍏鋒湁 suspend 鍜?slowdown 鍔熻兘銆?/li>
  • 鐢ㄦ埛鍙互璁╂殏鍋滃鐞嗙殑緋葷粺緇х畫澶勭悊錛屽嵆妗嗘灦蹇呴』鍏鋒湁 resume 鍔熻兘銆?/li>
  • 鐢ㄦ埛鍙互璁╃郴緇熷仠姝㈠鐞嗭紝淇敼鏌愪簺閰嶇疆錛岀劧鍚庣戶緇鐞嗭紝鍗蟲鏋跺繀欏繪湁 re-start 鍔熻兘銆?/li>
  • 澶勭悊榪囩▼涓彂鐢熺殑閿欒錛岃鍛婄郴緇熷繀欏昏褰曚笅鏉ワ紝鐢ㄦ埛鍙互鏍規嵁榪欎簺璁板綍鏉ヤ慨姝f暟鎹?/li>
  • 閫氳繃閰嶇疆鏂囦歡寤虹珛瑙勫垯鏉ヨВ鍐蟲暟鎹崈杈逛竾鍖栫殑闂銆?/li>

鏋勫緩妗嗘灦

鏋勫緩浜や簰鎬?/span>

瑕佷嬌妗嗘灦鏈変氦浜掓э紝鎴戜滑蹇呴』鏈変笁涓釜綰跨▼錛氬鎴風綰跨▼錛屾湇鍔$綰跨▼錛屽伐浣滅嚎紼嬨傚鎴風綰跨▼璐熻矗鍙戝嚭宸ヤ綔鎸囦護錛屾湇鍔$綰跨▼鎺ュ彈榪欎簺鎸囦護騫惰皟鐢ㄥ伐浣滅嚎紼嬫潵鍋氬疄闄呯殑宸ヤ綔銆傚浜庡鎴風鍜屾湇鍔″櫒浜や簰錛屽湪娌℃湁 web 鏈嶅姟鍣ㄦ敮鎸佺殑鎯呭喌涓嬶紝鎴戜滑鍙互閲囩敤涓縐嶅彜鑰佷絾鏄緢鏈夋晥鐨勫仛娉曪細socket 緙栫▼銆?Java socket 瀵硅薄鐨?accept 鏂規硶浼氫竴鐩撮樆濉炵洿鍒板鎴風鏈夌▼搴忚緭鍏ワ紝褰撳鎴風鏈夋柊鐨勫懡浠よ緭鍏ョ殑鏃跺欙紝鏈嶅姟鍣ㄧ浠?socket 涓鍑哄懡浠わ紝鐒跺悗鎵ц鍛戒護銆備笅闈㈡槸紺轟緥紼嬪簭錛孋lient.java 浠h〃瀹㈡埛绔▼搴忥紝Server.java 浠h〃鏈嶅姟鍣ㄧ紼嬪簭錛學orker.java 浠h〃宸ヤ綔紼嬪簭 ,Config.java 浠h〃緋葷粺涓竴浜涘弬鏁伴厤緗?/p>
娓呭崟 1. 瀹㈡埛绔▼搴?/strong>
package com.ibm.batch.sample;

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import org.apache.log4j.Logger;

public class Client {
	private Config config = null;
	public void setConfig(Config config) {
		this.config = config;
	}
	private Logger logger = Logger.getLogger(Client.class);
	public void sendCommand(String command) {
		Socket socket = null;
		OutputStream out = null;
		BufferedWriter writer = null;
		try {
			// establish the connection with server.
			socket = new Socket(config.getHost(), config.getSocketPort());
			out = socket.getOutputStream();
			writer = new BufferedWriter(new OutputStreamWriter(out));
			// send the command to server
			writer.write(command);
			writer.flush();
		} catch (IOException e) {
			logger.error(e.getMessage(), e);
			throw new RuntimeException(e);
		}
	}
}


娓呭崟 2. 鏈嶅姟鍣ㄧ紼嬪簭
package com.ibm.batch.sample;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import com.ibm.batch.sample.util.ResourceUtils;

public class Server {
	private Config config = null;
	private boolean processing = true;	
	private Worker worker = null;
	public void setConfig(Config config) {
		this.config = config;
	}
	public static void main(String[] args) {
		Server server = new Server();
		// create the work thread
		Worker worker = server.createWorker(args);
		worker.start();		
		server.receiveAndExecuteCommand();
	}
	private Worker createWorker(String[] args) {
		Worker worker = new Worker();
		this.worker = worker;
		return worker;
	}
	/**
	 * receive the command from client and execute the command. the method is
	 * keeping running until client send the 'stop' command.
	 * 
	 * @throws Exception
	 */
	public void receiveAndExecuteCommand() {
		ServerSocket serverSocket = buildSocketConnection();
		// loop until client send 'stop' command
		while (processing) {
			Socket socket = null;
			try {
			socket = serverSocket.accept();
			String commandLine = readCommandFromSocket(socket);
                executeCommand(commandLine);
			} catch (Exception e) {
				throw new RuntimeException(e);
			} finally {
				ResourceUtils.closeSocket(socket);
			}
		}
	}
	private void executeCommand(String commandLine) {
		// TODO Auto-generated method stub
	}

	/**
	 * read the command from the socket
	 * 
	 * @param socket
	 * @return
	 */
	private String readCommandFromSocket(Socket socket) {
		InputStream in = null;
		BufferedReader bufferedReader = null;
		String commandLine = null;
		try {
			in = socket.getInputStream();
			bufferedReader = new BufferedReader(new InputStreamReader(in));
			commandLine = bufferedReader.readLine();
		} catch (IOException e) {
			throw new RuntimeException(e);
		} finally {
			ResourceUtils.closeInputStream(in);
			ResourceUtils.closeReader(bufferedReader);
		}
		return commandLine;
	}
	/**
	 * build the socket.
	 * 
	 * @return
	 */
	private ServerSocket buildSocketConnection() {
		// prepare the socket for client to connect.
		ServerSocket serverSocket;
		try {
			serverSocket = new ServerSocket(config.getSocketPort());
		} catch (java.net.BindException e1) {
			throw new RuntimeException("Socket port already in use.", e1);
		} catch (IOException ioe) {
			throw new RuntimeException(ioe);
		}
		return serverSocket;
	}
}


娓呭崟 3. 宸ヤ綔紼嬪簭
package com.ibm.batch.sample;

import org.apache.log4j.Logger;

public class Worker extends Thread {
	Logger logger = Logger.getLogger(Worker.class);
	/**
	 * the main method for create item function.
	 */
	public void run() {
		createItem();
	}
	/**
	 * do the real job
	 */
	private void createItem() {	 		
	}
}

娣誨姞 suspend 鍜?slowdown 澶勭悊鍛戒護

澶ф暟閲忕殑鏁版嵁榪佺Щ涓鑸槸鍦ㄥ懆鏈垨鑰呮櫄涓婅繘琛岋紝浣嗘槸濡傛灉瀹㈡埛鐨勫巻鍙叉暟鎹お澶э紝鍦ㄥ懆鏈垨鑰呮櫄涓婃暟鎹彲鑳藉鐞嗕笉瀹岋紝涓轟簡涓嶅獎鍝嶇敓浜х幆澧冪殑鎬ц兘錛屾垜浠繀欏昏兘澶熷湪瀹㈡埛鐨勫伐浣滄椂闂存殏緙撳鐞嗘垨鑰呴檷浣庡鐞嗙殑棰戠巼錛屾妸 cpu 絳夎祫婧愯緇欏鎴風▼搴忥紝涔熷氨鏄澶勭悊綰跨▼ worker 鐨勫伐浣滃彲浠?suspend 鎴栬?slowdow 銆備負浜嗚 worker 綰跨▼鐭ラ亾闇瑕?suspend 褰撳墠澶勭悊錛屾垜浠彲浠ュ湪 worker 鍐呴儴璁劇疆涓涓竷灝斿彉閲?isSuspend錛屽綋紼嬪簭鍦ㄥ驚鐜垱寤?CM item 鐨勬椂鍊欙紝鎴戜滑姣忔閮藉垽鏂竴涓嬭繖涓竷灝斿彉閲?isSuspend錛屽綋鍏朵負 ture 鐨勬椂鍊欙紝紼嬪簭灝辮皟鐢ㄧ嚎紼嬬殑 wait 鏂規硶涓柇褰撳墠綰跨▼鐨勫鐞嗭紝wait 鏂規硶榪樺彲浠ユ帴鍙椾竴涓互寰涓哄崟浣嶇殑鏃墮棿鍙傛暟錛屽綋鏃墮棿鍒拌揪 wait 鎸囧畾鐨勬椂闂寸殑鏃跺欙紝紼嬪簭緇х畫鍒涘緩 CM Item 銆備負浜嗗綰跨▼涔嬮棿鐨勫彉閲忓彲瑙佹э紝鎴戜滑蹇呴』鎶?worker 鐨?isSuspend 鍙橀噺鍜?suspendTime 璁劇疆涓?volatile 銆傚悓鐞嗘垜浠緗竴涓竷灝斿彉閲?isSlowdown 浠ュ強 slowdowTime 銆傜ず渚嬬▼搴忓涓嬶細


娓呭崟 4. 宸ヤ綔紼嬪簭
package com.ibm.batch.sample;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import org.apache.log4j.Logger;
import com.ibm.batch.sample.util.ResourceUtils;

public class Worker extends Thread {
	Logger logger = Logger.getLogger(Worker.class);	
	private volatile boolean isSlowdown = false;
	private volatile Double slowdownTime;
	private volatile boolean isSuspend;
	private volatile Double suspendTime;
	public void setSlowdown(boolean isSlowdown) {
		this.isSlowdown = isSlowdown;
	}
	public void setSlowdownTime(Double slowdownTime) {
		this.slowdownTime = slowdownTime;
	}
	public void setSuspend(boolean isSuspend) {
		this.isSuspend = isSuspend;
	}
	public void setSuspendTime(Double suspendTime) {
		this.suspendTime = suspendTime;
	}
	public boolean isSlowdown() {
		return isSlowdown;
	}
	public Double getSlowdownTime() {
		return slowdownTime;
	}
	public boolean isSuspend() {
		return isSuspend;
	}
	public Double getSuspendTime() {
		return suspendTime;
	}
	protected Object semaphore = new Object();
	private Config config;
	public void setConfig(Config config) {
		this.config = config;
	}


娓呭崟 5. 涓繪柟娉?/strong>
/**
	 * the main method for create item function.
	 */
	public void run() {
		BufferedReader reader = null;
		try {
			reader = getFileReader();
			String oneLine = null;
			while ((oneLine = reader.readLine()) != null) {
				if (isSlowdown()) {
					sleep4GivenTime();
				}
				if (isSuspend()) {
					suspend4SomeTime();
				}
				createItem(oneLine);
			}
		} catch (Exception e) {
			throw new RuntimeException(e);
		} finally {
			ResourceUtils.closeReader(reader);
		}
	}

	/**
	 * current thread sleep for some time,the unit is minute.
	 */
	protected void sleep4GivenTime() {
		try {
			Thread.sleep((long) (slowdownTime.doubleValue() * 1000));
		} catch (InterruptedException e) {
			// do nothing
		}
	}


娓呭崟 6.Suspend 鏂規硶
			
/**
 * suspend working for given time.
 */
protected void suspend4SomeTime() {
	synchronized (semaphore) {
	try {
	Double suspendTime = getSuspendTime();
	if (suspendTime != null) {
		double suspendTimeDouble = suspendTime.doubleValue() * 60 * 1000;
		semaphore.wait((long) suspendTimeDouble);
	} else {
	                     semaphore.wait();
	}
	} catch (InterruptedException e) {
	// tell user that the processing started
	logger.info("suspend is over,system is continue processing .");
	}
	}
	}
	/**
	 * do the real job
	 * 
	 * @throws Exception
	 */
	private void createItem(String oneLine) throws Exception {
	}
	private BufferedReader getFileReader() throws FileNotFoundException {
		String fileName = config.getFileName();
		File processingFile = new File(fileName);
		BufferedReader reader = new BufferedReader(new FileReader(
				processingFile));
		return reader;
	}
}

娣誨姞 resume 鍔熻兘

鍦ㄧ▼搴忔殏鍋滃鐞嗕互鍚庯紝鎴戜滑鍙互鎻愬墠緇堟 suspend錛岃妗嗘灦緇х畫澶勭悊錛屼篃灝辨槸妗嗘灦蹇呴』鏈?resume 鍔熻兘銆傛垜浠皟鐢?Worker.java 瀵硅薄涓婄殑 notify 鏂規硶鏉ュ疄鐜拌繖涓姛鑳斤紝紺轟緥濡備笅錛?/p>
娓呭崟 7.Resume
public class Worker extends Thread {
	/**
	 * resume the working.
	 */
	public void continueWorking() {
		cleanSuspend();
		synchronized (semaphore) {
			semaphore.notify();
		}
	}
}

 

娣誨姞 stop 鍜?re-start 鍔熻兘

鏈夋椂鍊欑敤鎴峰洜涓轟竴浜涘師鍥狅紙渚嬪淇敼閰嶇疆鏂囦歡錛夋兂鍋滄紼嬪簭鐨勬墽琛岋紝鎵浠ユ鏋跺繀欏繪湁 stop 鐨勫姛鑳斤紝浣嗘槸 stop 鐨勬椂鍊欐垜浠繀欏繪敞鎰忚褰曠▼搴忓鐞嗗埌鐨勮鏁幫紝榪欐牱瀹㈡埛鍐嶅紑濮嬫墽琛岀殑鏃跺欒兘澶熶粠涓婃鎵ц鐨勬柇鐐圭戶緇墽琛岋紝涔熷氨鏄鏋跺叿澶囦簡 re-start 鍔熻兘錛岃繖鏄?batch 紼嬪簭蹇呴』鍏峰鐨勪竴縐嶅緢閲嶈鐨勫姛鑳斤紝re-start 鍔熻兘鏈夊縐嶅疄鐜版柟娉曪紝鎴戜滑榪欓噷閲囧彇涓縐嶇畝鍗曠殑鏂規硶錛屽湪 stop 鐨勬椂鍊欙紝鎶婂綋鍓嶅鐞嗙殑璁板綍鍒頒竴涓枃鏈枃浠朵腑鍘伙紝涓嬫鍚姩鐨勬椂鍊欎粠涓婃鏈鍚庡鐞嗙殑瀵硅薄寮濮嬭繘琛屽鐞嗐傛墍浠ユ垜浠湪 Worker.java 涓鍔犱竴涓?keepProcessing 甯冨皵鍙橀噺錛屽湪寰幆鍒涘緩 CM Item 鐨勬椂鍊?, 鎴戜滑姣忔閮藉垽鏂竴涓嬭繖涓兼槸鍚︿負 true錛屽鏋滀負 false 鐨勮瘽錛屾垜浠氨鍋滄寰幆澶勭悊錛屽湪 Worker.java 涓繕瑕佸鍔犱竴涓?moveReaderToLastProcess 鏂規硶錛屾妸 reader 閲嶆柊瀹氬悜鍒頒笂嬈″鐞嗙偣銆?/p>
娓呭崟 8. 鍋滄鍜岄噸鍚?/strong>
public class Worker extends Thread {
	private volatile boolean keepProcessing;
	public boolean isKeepProcessing() {
		return keepProcessing;
	}
	public void setKeepProcessing(boolean keepProcessing) {
		this.keepProcessing = keepProcessing;
	}
	/**
	 * the main method for create item function.
	 */
	public void run() {
		BufferedReader reader = null;
		try {
			long lastProcessedRow = config.getLastProcessedRow();	
			reader = moveReaderToLastProcess(lastProcessedRow);
			String oneLine = null;
			connectToCM();
			while (((oneLine = reader.readLine()) != null)
					&& isKeepProcessing()) {
				if (isSlowdown()) {
					sleep4GivenTime();
				}
				if (isSuspend()) {
					suspend4SomeTime();
				}
				createItem(oneLine);
				lastProcessedRow++;
			}
			logCurrentProcessingLine(lastProcessedRow);
		} catch (Exception e) {
			throw new RuntimeException(e);
		} finally {
			ResourceUtils.closeReader(reader);
		}
	}	
	private void logCurrentProcessingLine(long lastProcessedRow) {
		config.setLastProcessedRow(lastProcessedRow);
	}	
	/**
	 * move current reader position to last process postion
	 * @return
	 * @throws IOException
	 */
private BufferedReader moveReaderToLastProcess(long lastProcessedRow) 
         throws IOException {
		// get the file reader
		BufferedReader reader = getFileReader();	
			
		// move the reader to the start row -1.
		int count = 0;
		while (count < lastProcessedRow-1) {
			reader.readLine();			
			count++;
		}
		return reader;
	}
}

娣誨姞閿欒澶勭悊鍔熻兘

鍒氭墠鎴戜滑璋冪敤鐨?createItem 鏂規硶鏄洿鎺ユ姏鍑哄紓甯哥殑錛屼絾鏄繖鏍風殑澶勭悊瀹為檯涓婃槸閿欒鐨勶紝鍥犱負鍦?batch 澶勭悊榪囩▼涓紝鎴戜滑涓嶅笇鏈涘湪澶勭悊鏌愪竴涓?item 鍑洪敊瀵艱嚧鍓╀綑鐨?item 涓嶅啀澶勭悊錛屾墍浠ユ垜浠湪 catch 閲岄潰瀵瑰紓甯歌繘琛屽垎綾誨鐞嗭紝鎴戜滑 catch 浣忛潪媯鏌ュ紓甯革紙runtime exception錛夛紝閫氬父闈炴鏌ュ紓甯告槸涓嶅彲浠ユ仮澶嶇殑錛屾墍浠ユ垜浠洿鎺ユ姏鍑猴紝璁╃▼搴忕粨鏉熷鐞嗐傚浜庡叾浣欑殑寮傚父錛屾垜浠彧鏄湪鏃ュ織涓褰曚笅鏉ワ紝騫朵笉鎶涘嚭銆傚湪鍏ㄩ儴澶勭悊緇撴潫浠ュ悗錛岀敤鎴峰彲浠ユ鏌ユ棩蹇楁潵榪涜鐩稿簲鐨勫鐞嗐傜ず渚嬩唬鐮佸涓嬶細


娓呭崟 9. 閿欒澶勭悊
public class Worker extends Thread {
	/**
	 * do the real job
	 * 
	 * @throws Exception
	 */
	private void createItem(String oneLine) throws Exception {
		try {
			//create the item from one line
		}catch (RuntimeException e) {
			throw e;
		}catch (Exception e) {
			logger.error(e.getMessage(),e);
		}
	}
}

娣誨姞鍒涘緩 CM item 鍔熻兘

涓嬮潰鐨勫唴瀹規斁鍦ㄤ簡濡備綍浣跨敤閰嶇疆鏂囦歡鏉ュ鐞嗗鍏ョ殑闂銆?/p>

閫氳繃璋冪敤鍜岃繍琛?API 鏉ュ鐞嗘暟鎹殑瀵煎叆錛屾垜浠鍏堝畾涔変竴涓熀鏈俊鎭殑閰嶇疆鏂囦歡錛岀敤鏉ュ埗瀹氳繛鎺ョ殑淇℃伅錛屽叾浠栭厤緗枃浠剁殑鐩綍錛屽伐浣滅殑鐩綍絳夋湁鍏沖鍏ラ渶瑕佺殑鍙傛暟銆傜劧鍚庡畾涔夊鍏ユ暟鎹拰 DB2 Content Manager 鐨勯」鐨勬槧灝勯厤緗枃浠躲傞厤緗枃浠跺畾涔夌粨鏉熷悗錛屾垜浠氨鍙互璋冪敤錛★及錛╂潵鍚姩鐩稿簲鐨勫鍏ユ祦紼嬶紝鍦ㄧ▼搴忚繍琛岃繃紼嬩腑錛屽彲浠ュ姩鎬佺殑鏇存敼閰嶇疆錛屼粠鑰屾湁鏁堢殑澶勭悊瀵煎叆鐨勪換鍔°?/p>

鍦ㄥ紑鍙戣繃紼嬩腑錛屾偍鍙互鐏墊椿鍦板畾涔夊悇縐嶉厤緗枃浠朵互渚垮疄鐜板縐嶅鍏ヨ鍒欙紝鍚屾椂鍦ㄧ▼搴忚繍琛屼腑榪涜鏁版嵁鏍¢獙錛屼互闃叉鍐椾綑鍜岄潪娉曟暟鎹閿欒瀵煎叆銆?/p>

涓嬮潰鐨勪竴浜涢厤緗拰浠g爜紺轟緥錛屼互姝や粙緇嶄簡濡備綍瀹氫箟閰嶇疆鏂囦歡錛岀劧鍚庣鐞?API 鏉ュ畬鎴愬鍏ョ殑浠誨姟銆?/p>

瀹氫箟鍩烘湰淇℃伅閰嶇疆鏂囦歡錛氬湪璇ユ枃浠朵腑錛岄』鍏堣瀹?IBM DB2 Content Manager 鐨勪竴浜涜繛鎺ュ弬鏁幫紝 濡傦細

contentManagerDatabase=iCMnlsdb // 瀹氫箟璋冪敤鐨勬暟鎹簱鍚嶅瓧
 contentManagerUsername=iCMadmin // 瀹氫箟鐢ㄦ埛鍚?
 contentManagerPassword= password // 瀹氫箟榪炴帴瀵嗙爜
 contentManagerSchema=ICMADMIN // 瀹氫箟鍏蜂綋鐨?schema

鎮ㄥ彲浠ュ湪浠g爜涓敤浠ヤ笂鍙傛暟鏉ュ疄鐜板 IBM DB2 Content Manager 鐨勮繛鎺ワ紝浠g爜紺轟緥錛?/p>
DKDatastoreICM dsICM = new DKDatastoreICM(); 
// 鍒涘緩榪炴帴 dsICM.connect("iCMnlsdb", "iCMadmin", "password", "SCHEMA=ICMADMIN");

榪橀渶鎸囧畾鍝釜鏂囦歡澶瑰瓨鏀炬槧灝勬枃浠訛紝浠ュ強闇瀵煎叆鐨勬暟鎹枃浠訛紝濡傦細

mappingFilePath=config/rapid/mapping // 鏄犲皠鏂囦歡璺緞
 dataFileFolder=config/rapid/data // 鏁版嵁鏂囦歡璺緞

涔熷彲瀹氫箟涓浜涘弬鏁版潵澧炲己璇ュ鍏ョ殑嫻佺▼鎺у埗錛屽錛?/p>
runPhase=2 
// 鎸囧畾鏄浜岄樁孌靛鍏ワ紝鍦ㄥ鍏ユ椂闇鏇存柊宸叉湁鐨勬暟鎹?/pre>

瀹氫箟鏄犲皠鏂囦歡錛氳閰嶇疆鏂囦歡涓昏鐢ㄤ簬灝嗙敤鎴鋒兂瑕佸鍏ョ殑鏁版嵁鏄犲皠鍒?IBM DB2 Content Manager 鐨?Item Type 涓紝鎮ㄥ彲鑷敱瀹氬埗璇ユ枃浠訛紝浣跨敤鎴烽伒寰偍瀹氫箟鐨勮鑼冮『鍒╁畬鎴愭暟鎹縼縐匯傚錛?/p>
C001.del=c01 
 C002.del=c01

璇ュ畾涔変腑 C001.del 鍜?C002.del 鏄渶瑕佸鍏ョ殑鏁版嵁鏂囦歡錛宑01 鏄搴旂殑 Item Type 鍚嶅瓧銆傝繖縐嶅畾涔夋柟娉曞彲瀹炵幇灝嗗涓暟鎹枃浠跺鍏ュ悓涓涓?Item Type 涓?/p>

鍏蜂綋鐨勫搴斿叧緋誨涓嬶細

position=1|name=COMPANYNAME 
 position=2|name=COMPANYID 
 position=3|name=INPUTVALUE 
 position=-1|name=SPECIALVALUE|value=C1

榪欎釜鏄犲皠鍏崇郴鍙嶆槧浜嗘暟鎹枃浠朵腑鍒楁暟鍜?Item Type 涓?attribute 鐨勫叧緋伙紝濡傜涓鍒楀湪 Item Type 涓唬琛ㄤ簡鍚嶅瓧涓?COMPANYNAME 鐨?attribute 銆傛偍涔熷彲瀹氫箟涓浜涚壒孌婅鍒欙紝濡傚皢 position 璁句負璐熸暟錛屼互渚垮弽鏄犺鍒楁槸涓涓壒孌婄殑 attribute, 瀹冪殑鍊兼槸鍥哄畾鐨勩?姣斿灝?position 璁句負 -1 鏃訛紝鍚嶄負 SPECIALVALUE 鐨?attribute 鐨勫兼繪槸涓?C1 銆?/p>

鑻ユ偍鎯沖疄鐜板皢涓涓暟鎹枃浠跺鍏ュ涓?Item Type 涓紝鍙湪鏁版嵁鏂囦歡涓姞鍏ヤ竴涓壒孌婂垪錛屽湪鏄犲皠鏂囦歡涓寚瀹氳鍒楃殑鍒楁暟錛屼互鍙婂綋璇ュ垪鐨勫煎拰澶氱 Item Type 鐨勬槧灝勫叧緋匯傚錛?/p>
C003.del(position:3)

榪欐牱錛孋003.del 灝變笉鏄崟涓鐨勫搴斾竴涓?Item Type錛岃屾槸鍏堝幓鍙栫涓夊垪 INPUTVALUE 鐨勫鹼紝鍐嶅幓瀵瑰簲琛ㄤ腑鏌ユ壘鍒板叧鑱旂殑 Item Type 銆傝瀵瑰簲琛ㄥ彲璁炬垚錛?/p>
Value1=c01 
 Value2=c02

鑻ョ涓夊垪 INPUTDOCID 鐨勫間負 Value1 鏃訛紝鍏跺搴旂殑 Item Type 涓?c01錛屽悓鏍風殑褰撳間負 Value2 鏃訛紝浼氬皢璇ヨ鏁版嵁瀵煎叆鍒?c02 鐨?Item Type 涓?/p>

璋冪敤 API 瀹屾垚鎿嶄綔鐨勪唬鐮佺ず渚嬶細鍦ㄧ紪鍐欎唬鐮佽繃紼嬩腑錛岄渶瑕佽皟鐢?DB2 Content Manager 鐨?API 鏉ュ畬鎴?Item Type 浠ュ強瀹冨寘鍚殑 attribute 鐨勫垱寤恒備笂鏂囧凡緇欏嚭浜嗛氳繃鍙傛暟鏉ヨ繛鎺?Content Manager 鐨勬柟娉曪紝涓嬮潰鐨勭ず渚嬩唬鐮佺敤寰楀埌鐨?DKDatastoreICM 鏉ュ疄鐜板叿浣撶殑鎿嶄綔錛?/p>
娓呭崟 10. API 璋冪敤
// Create an item / DDO / Root Component
DKDDO ddo = dsICM.createDDO("S_withChild", itemPropertyOrSemanticType); 
//createDDO(<Overall Item Type>, <Item Property / Semantic Type>);

// Adding Multivalue Attributes to DDOs, multiple type can be used, 
//here just give some example
 ddo.setData(ddo.dataId(DKConstant.DK_CM_NAMESPACE_ATTR,"S_varchar"), 
"this is a string value");  
  //string

ddo.setData(ddo.dataId(DKConstant.DK_CM_NAMESPACE_ATTR,"S_date"), 
java.sql.Date.valueOf("2001-08-12"));
 //date

ddo.setData(ddo.dataId(DKConstant.DK_CM_NAMESPACE_ATTR,"S_double"), 
new Double("123")); 
//double

緇撴潫璇?/font>

閫氳繃鏈枃鐨勪粙緇嶏紝鐩鎬俊鎮ㄥ澶氱嚎紼嬫瀯寤虹殑 Batch 妗嗘灦瀹炵幇澶ч噺鏁版嵁榪佺Щ鐨勮繃紼嬶紝鍜岄氳繃閰嶇疆鏂囦歡鐨勭鐞嗙殑 API 瀹炵幇鏁版嵁瀵煎叆鐨勮繃紼嬩篃鏈変簡涓瀹氱殑浜嗚В鍜屽涔犮傛偍鍙伒媧誨湴瀹炵幇涓瀵逛竴錛屼竴瀵瑰錛屽瀵瑰絳夊悇縐嶆槧灝勫叧緋伙紝鎮ㄤ篃鍙互鍒╃敤澶氱嚎紼嬫潵瀹炵幇鍏朵粬鐨勫姛鑳界殑寮鍙戯紝緙栧啓鍑烘洿鍔犲瘜鏈夊垱閫犳х殑杞歡銆?/p>

鍙傝冭祫鏂?

瀛︿範

鑾峰緱浜у搧鍜屾妧鏈?/strong>

  • 浣跨敤鍙洿鎺ヤ粠 developerWorks 涓嬭澆鐨?IBM 璇曠敤杞歡 鏋勫緩鎮ㄧ殑涓嬩竴涓?Linux 寮鍙戦」鐩?br />


孌墊棴 2011-12-28 17:16 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 久久精品亚洲综合| 亚洲人成人77777在线播放| 国产精品99爱免费视频| 亚洲人成在线影院| 黄网址在线永久免费观看| 久久免费99精品国产自在现线| 亚洲男人第一av网站| 全免费A级毛片免费看网站| 国产免费AV片在线观看播放| 亚洲成人福利在线| 亚洲国产成人影院播放| 59pao成国产成视频永久免费 | 亚洲va在线va天堂成人| 无码国产亚洲日韩国精品视频一区二区三区| 久草免费福利在线| 亚洲欧美日韩综合久久久久| 国产成人亚洲综合无码精品| 国产在线观看免费不卡| 9420免费高清在线视频| 九九久久国产精品免费热6 | 99精品国产免费久久久久久下载| 亚洲一区精彩视频| 亚洲精品tv久久久久久久久| 最近的中文字幕大全免费版| 国产综合免费精品久久久| 亚洲狠狠婷婷综合久久蜜芽| 久久国产精品亚洲综合| 亚洲AV无码之日韩精品| 免费无码黄十八禁网站在线观看| 麻豆精品成人免费国产片| 免费人成大片在线观看播放| 亚洲一区中文字幕在线电影网| 国产成人A人亚洲精品无码| 亚洲国产人成精品| 成年女人色毛片免费看| 91高清免费国产自产| 大地资源网高清在线观看免费| 国产尤物在线视精品在亚洲| 国产精品亚洲精品| 亚洲综合男人的天堂色婷婷| 亚洲AV人人澡人人爽人人夜夜|