Table of Contents

MDM CS - Colaborative Server (PIM, CE)

Obsah

<dl> <dt>Externi odkazy</dt> <dt>Interni odkazy</dt> </dl>

<a name=“odkazy|]]

Externi odkazy

Product information - on IBM sites
MDM Developers - on IBM DevelopersWorks
MDM training
MDM 10.1 documentation on IBM InfoCenter
konkurence - Informatica MDM
Seznam MDM CS shellovych skriptu
DW - Install cluster environment
DW - MDMCS Java API Extensions

<a name=“interni|]]

Interni odkazy

WAS
Python
JACL

<a name=“portfolio|]]

MDM portfolio


<a name=“url|]]

URL aplikace

http://IP:7507/ … MDM aplikace
https://IP:9043/ibm/console/ … WAS Administracni konzole

[[http://www-01.ibm.com/support/knowledgecenter/SSWSR9_11.4.0/com.ibm.pim.ins.doc/pim_con_pim_components.html?cp=SSWSR9_11.4.0%2F1-2-1-2|Procesy]], adresare, konfiguracni soubory

admin … Startuje a zastavuje sluzby na vzdalenych pocitacich
eventprocessor … dispatchuje udalosti mezi jednotlivymy komponentami
workflowengine … zpracovava udalosti z workflow a na zaklade toho meni data v databazi
scheduler … provozje vsechny naplanovane ukoly. Komunikuje s aplikaci skrz DB, filesystem a rmiregistry
queuemanager … posila dokumenty z MDM CS
appsvr … Aplikacni server - webove prostreni
rmiregistry … registr dostupnych sluzeb, jejich funkci a pripojovacich metod k nim

Start/stop

<b>Kompletni stop MDM</b>
su - -c ”/opt/IBM/HTTPServer/bin/apachectl -k stop” … stop IHS
$TOP/go/stop_local.sh … stop MDM
/opt/IBM/WebSphere/profiles/Dmgr01/bin/stopManager.sh … stop WAS DMGR
/opt/IBM/WebSphere/profiles/AppSrv01/bin/stopNode.sh … stop WAS NODEAGENT
su - db2inst1 -c “db2stop” … stop databaze

<b>Kompletni start MDM</b>
db2start … start DB2
/opt/IBM/WebSphere/profiles/Dmgr01/bin/startManager.sh … start WAS DMGR
/opt/IBM/WebSphere/profiles/AppSrv01/bin/startNode.sh … Start WAS NODEAGENT
$TOP/bin/go/start_local.sh … start MDM
su - -c ”/opt/IBM/HTTPServer/bin/apachectl -k start” … start IHS

<b>Ovladani jednotlivych komponent</b> $TOP/bin/go/svc_control.sh –action=start –svc_name=scheduler_WPCVM … nastartuje pouze scheduler

<b>Status</b>
$TOP/bin/test_db.sh … test pripojeni do DB
$TOP/bin/go/rmi_status.sh … seznam vseh sluzeb a jejich status
$TOP/bin/go/get_service_status.sh –svc_name scheduler_LINUX01 … status komponenty (sluzby)
$TOP/bin/get_ccd_version.sh … zobrazi verzi MDM CS

Konfigurace

$TOP/bin/conf/env_settings_ini … zakladni soubor konfigurace
$TOP/setup.sh … prvni konfigurace prostredi (cesty ke konfiguraci env_settings and $TOP) + test prostredi (php knihovny, syntaxe envv_settings_ini)
$TOP/bin/configureEnv.sh … generovani konfiguracnich souboru (xml, atd.). Prepise vsechny konf. soubory krome common.properties
$TOP/etc/default/common.properties … hlanvni nastaveni MDM. Neni prepsano configureEnv.sh, jen updatovano. Neni realtime, je treba restartovat sluzbu
$TOP/etc/default/log.xml … konfigurace logu MDM - zmena je realtime, netreba restartovat JVM
$TOP/etc/default/data_entry_properties … konfigurace IHM (WAS aplikace), memeni polozek portalu - pridavani novych menu a JARek. Neni online, potreba restart WAS
$TOP/etc/default/db.xml … obsahuje data na pripojeni DB
$TOP/etc/default/mdm_cache.properties … cache parametry pro objekty
$TOP/bin/conf/service_mem_settings.ini … Nastaveni velikosti pameti JVMek
docstore_mount.xml … nastaveni mountovani adresaru do docstoru

Logy

Pokud neni urceno jinak, tak jsou logy v $TOP/log, v adresarich ${komponenta}_${instance} a v User_Logs.

default.log … udalosti komponenta
db.log … pomale requesty (20 minut), ne pro jednotlive BD query
svc.pid … pid procesu
svc.out … informace ze startu sluzby (classpath, jake sluzby komponenty jsou spusteny atd)
svc.err, exception.log … chyby

Procesy - komponenty

rmi_LINUX01 … RMI Registry - ELF process - ktery dela directory services pro MDM CS
admin_LINUX01 … java com.ibm.ccd.admin.common.Admin
eventprocessor_LINUX01 … java com.ibm.ccd.common.event.EventProcessor
workflowengine_LINUX01 … java com.ibm.ccd.workflow.common.WorkflowEngine
queuemanager_LINUX01 … java com.ibm.ccd.connectivity.common.QueueService
appsvr_LINUX01 … WAS
scheduler_LINUX01 … java com.ibm.ccd.scheduler.common.Scheduler

monitoring

bin/go/rmi_status.sh (perl /elixas/IBM/MDMPIM/bin/perllib/rmiStatus.pl) ktery spusti java tridu com.ibm.ccd.admin.common.RootAdmin na URL trigo_url=http://FRELIXPRDAS1A.loreal.wans:7514) neni vhodny na monitoring - kdyz nejede MDM, dlouhy timeout, kdyz jede ukaze vsechny procesy, neupozorni, kdyz nejake procesy chybi. Lze zkombinovat s jinym skriptem ktery obhospodari jine podminky (existence RMI portu, timeout, pocet procesu). Stejne to nepokryje vetsinu pripadu, kdy pocess existuje, ale neni funkcni.

Efektivni je monitorovat existenci procesu WAS, httpd, rmiregistry, admin eventprocessor workflowengine scheduler queuemanager

log monitor SystemOutLog na vsechny exception.log a SystemOut.log

URL monitorin

Best practice

<li>Nesestavovat Master Data z casto menicich se polocek - cena atd.</li>

Struktura DB

Vsechna data se importuji fo tabulky ITA, ulozene sloupce ID (id polozky) a BLOB - serializovana data (specialni format obsahujici vsechny mozne atributy) ktere nejsou citelna z DB, ale pomoci API (napr. trida getItemId(attr1=“red”). Pomale na operace, optimalizovane na extenzivni atributy a misto v DB. Tabulky ITM jsou interni idexace produktu podle atributu, interni indexace definovana jen v MDM. Od MDM9 nelze hledat nezindexovana data. Zavadi se ttabulka s XML. Pro kazdy pridany produkt se data updatuji v ITA, pokud se parametry indexuji, tak se updatuje ITM (idnex) a navic se produkt v XLM forme prida do XLM tabulky, kde probiha hledani v pripade nezindexovanych atributu. Hledani podle atributu probiha tak, ze se nejdriv vyraz provede na zindexovanych sloupcich - predfiltrovana data, a zbytek se hleda v XML tabulce. Kazda zmena parametru je verzovana. Zmena se prida jako dalsi polozka do ITA, updatuje se verze starte polozky a prida se do indexu nova verze. Cisteni lze delat jen smazanim starych verzi.

DocStore

Uloziste dokumentu, nachazi se jak v DB tak i na disku $TOP/public_html/suppliers. Pokud je soubor na disku, musi byt vytovrena reference v DB. Starcim a se o to “sluzba” docstore_mount (docstore_mount.xml je konfigurace). “Colaboration Manager - Document store”

Repports

Jedna se o joby. Joby jsou but “import”, “export”, nebo “report”. Reporty jsou joby ktere jsou bud napsany MDM skriptovacim jazyku (forma vbs), pripona .script, nebo skripty napsane v shelu nebo perlu na disku. “Product Manager - Repports”

Zaloha

binarni - adresare s instalaci (MDM, WAS) - pred kazdym updatem, deployem. DB - svechny data v MDM, vcetne DocStore. Je monzo delat studeny i teply backup. Je potreba i zalohovat exporty/importy z/do SAP a byt optrny s restorem aby se neztratily data z importu/exportu

Scheduler

Je proces, ktery cte v DB co ma delat. Admin proces zapise do DB udelej report1 s parametry1 a scheduler cte kazdych x min/sek tabulku a najde report1 parametry1 co ma vykonat a vykona to.

Monitoring

uziti tablespaces, disku na DB, disku, procesu, URL, kontrola zprocesovani importu/exportu

Udrzba

Mazani logu, DocStore, $TOP/src/db/schema/util/oracle/purge_profiles.sh - trace pri profilovani (debugu), $TOP/src/db/schema/util/drop_temp_agg_tables.pl, $TOP/src/db/schema/util/drop_log_tables_seq.pl, $TOP/src/db/schema/util/oracle/delete_versions_before_date.pl, $TOP/bin/db/analyze_schema.sh

Ovladani pomoci JAVA_RT

. $TOP/bin/compat.sh … nacte promenne, mimo jine JAVA_RT
$JAVA_RT com.ibm.ccd.common.wpcsupport.util.SupportUtil –cmd=getRunTimeCacheDetails … ukaze vyuziti cache
$JAVA_RT com.ibm.ccd.common.wpcsupport.util.SupportUtil –cmd=getRunTimeMemDetails … ukaze vyuziti pameti
$JAVA_RT com.ibm.ccd.common.wpcsupport.util.SupportUtil –cmd=filterLogFiles –fromtime=“${_CCD_FROMTIME}” –totime=“${_CCD_TOTIME}” –srcDir=“${WORKDIR} /pimLogs”
$JAVA_RT com.ibm.ccd.common.wpcsupport.util.SupportUtil –cmd=getTimeStamp
$JAVA_RT com.ibm.ccd.common.wpcsupport.util.SupportUtil –cmd=validateAdmin
$JAVA_RT com.ibm.ccd.common.wpcsupport.util.SupportUtil –cmd=validateServc –svclist=all

Vyvoj

DW: InfoSphere MDM Collaboration Server V10.0 design strategy and implementation, Part 1: A guideline using a sample business case
DW: MDMCS design strategy and implementation - Nastaveni IDE, konvence, pristupy, best practice atd.

MDM Skripty

Export lookup table
var envObjList = new EnvObjectList();
envObjList.addAllObjectsToExport("LOOKUP_TABLE_CONTENT");
var result = exportEnv(envObjList, "LOOKUP_CONTENT_export_20140918_153200.zip");
out.println("result: " + result);
Export current “JOB_LOOKUP_EXPORT_” Tables content
var envObjList = new EnvObjectList();

envObjList.setTypeToExport("LOOKUP_TABLE");
envObjList.addObjectByNameToExport("JOB_LOOKUP_EXPORT_BPG", null, "CREATE_OR_UPDATE");
envObjList.addObjectByNameToExport("JOB_LOOKUP_EXPORT_ELIXCORE", null, "CREATE_OR_UPDATE");
envObjList.addObjectByNameToExport("JOB_LOOKUP_EXPORT_ELIXPUBLISH", null, "CREATE_OR_UPDATE");
envObjList.addObjectByNameToExport("JOB_LOOKUP_EXPORT_ELIXSPEC", null, "CREATE_OR_UPDATE");
envObjList.addObjectByNameToExport("JOB_LOOKUP_EXPORT_OGCOM", null, "CREATE_OR_UPDATE");
envObjList.addObjectByNameToExport("JOB_LOOKUP_EXPORT_OGDIM", null, "CREATE_OR_UPDATE");
envObjList.addObjectByNameToExport("JOB_LOOKUP_EXPORT_SAPTR", null, "CREATE_OR_UPDATE");

envObjList.setTypeToExport("LOOKUP_TABLE_CONTENT");
envObjList.addObjectByNameToExport("JOB_LOOKUP_EXPORT_BPG", null, "CREATE_OR_UPDATE");
envObjList.addObjectByNameToExport("JOB_LOOKUP_EXPORT_ELIXCORE", null, "CREATE_OR_UPDATE");
envObjList.addObjectByNameToExport("JOB_LOOKUP_EXPORT_ELIXPUBLISH", null, "CREATE_OR_UPDATE");
envObjList.addObjectByNameToExport("JOB_LOOKUP_EXPORT_ELIXSPEC", null, "CREATE_OR_UPDATE");
envObjList.addObjectByNameToExport("JOB_LOOKUP_EXPORT_OGCOM", null, "CREATE_OR_UPDATE");
envObjList.addObjectByNameToExport("JOB_LOOKUP_EXPORT_OGDIM", null, "CREATE_OR_UPDATE");
envObjList.addObjectByNameToExport("JOB_LOOKUP_EXPORT_SAPTR", null, "CREATE_OR_UPDATE");

var result = exportEnv(envObjList, "JOB_LOOKUP_CONTENT_export.zip");
out.println("result: " + result);
Vymazani BUSINESS RULES
var ctgName = "BUSINESS_RULES";

var time1 = today().getTime();

var i = 0;
var item;
forEachCtgItem(ctgName, item) {
  out.writeln("Delete item " + item.getCtgItemPrimaryKey());
  deleteCtgItem(item);
  i++;
}
out.writeln("Deleted items : " + i);

var time2 = today().getTime();
var delay = time2 - time1;
out.writeln("Time : " + delay + " seconds");

Databaze

TSEC_SCU_USER … seznam uzivatelu