Meta 物件配置

商業物件本身包含一個最上層商業物件,該商業物件含有一或多個代表資料結構的子項物件。這表示每一個商業物件都包括部份含有 Meta 資料的子項物件,以及一或多個含有實際商業內容的子項物件。

最上層商業物件是所有要交換之物件的外層。當作外層的最上層商業物件並不含有商業資料,而是提供建置物件 (起始及完成交換需要此物件) 需要的應用程式特有文字及名稱值組。名稱值組表示子項屬性,該子項屬性可以指定建立所要求或需要之商業物件所需的 Meta 資料。

圖 8 顯示下列情況時最上層商業物件及子項物件關係:

圖 8. 輪詢事件範例情況中的最上層商業物件及子項 (商業及 Meta 物件)


圖 9 顯示下列情況時最上層商業物件及子項物件關係:

圖 9. 輪詢事件範例情況中的最上層商業物件及子項 Meta 物件


圖 10 顯示下列情況時最上層商業物件及子項物件關係:

圖 10. 要求處理範例情況中的最上層商業物件及子項 (商業及 Meta) 物件


圖 11 顯示下列情況時最上層商業物件及子項物件關係:

圖 11. 要求處理範例情況中的最上層商業物件及子項 (商業及 Meta) 物件


WebSphere MQ Workflow 程序可以具有不同的輸入及輸出資料結構,但涉及協同作業及連接器的交易僅可包括一種物件類型。為避免此限制, 建構了部份最上層商業物件,這些商業物件具有一個要求物件及一或多個回應物件 (作為子項)。明確地說,附加到 <boprefix> 配置內容的資料結構名稱可以判斷建立哪個最上層商業物件。這個最上層商業物件中的第一個 (與 Meta 資料無關) 子項物件中會輸入資料結構。

若要區分子項 Meta 物件與商業內容子項物件,最上層商業物件的應用程式特有資訊必須包括如下的標籤:

cw_mo_tag=child meta-object_attribute_name
 

註:
多個 Meta 資料標示必須以分號定界。會忽略定界字元旁邊的空格。(例如:cw_mo_foo = bar 等於 cw_mo_foo=bar)

其中 tag = 下列其中之一:

會為配置或動態 Meta 資料保留所有以 cw_mo_ 開頭的應用程式特有資訊。因此,當連接器代理程式收到商業物件時,它只需檢查商業物件本身的應用程式特有資訊, 就可以立即判斷是否已為商業物件併入所有執行時期 Meta 資料。資料處理常式也會檢查商業物件層次的應用程式特有資訊, 以判斷在序列化或解除序列化程序中要併入或排除哪些子項物件。

例如,請考量最上層商業物件 WfRequest_MyCustomer,該商業物件需要一個配置 Meta 物件。您可以指定 MyConfig 類型的物件配置屬性。序列化母物件時,若要允許連接器辨識 Meta 物件並防止將資料處理常式納入 『MyConfig』, 您可以將應用程式特有資訊新增到 WRequest_MyCustomer 物件中 (使用標籤 cw_mo_wfptcfg=MyConfig 的格式)。

當建構 WebSphere MQ Workflow 的要求或回應時,連接器會使用範本來建構商業物件。

MO_MQWorkflow_ProcessTemplateConfig

為了提供要建立並執行之 WebSphere MQ Workflow 程序的資訊,連接器需要將 Meta 物件併入最上層商業物件中。此 Meta 物件包括要使用之程序範本的相關資訊、是否需要回應、WebSphere MQ Workflow 是否必須等到程序完成才傳回結果等等。藉由將此資訊儲存在 Meta 物件中,連接器可以為所要求的 WebSphere MQ Workflow 程序動態配置應用程式特有資訊。所有協同作業要求都需要此 Meta 物件 (或同等項目)。

連接器會讀取最上層商業物件的應用程式特有資訊,並尋找名稱值組:

cw_mo_wfptcfg=xxx
 

其中 xxx 是子項屬性的名稱,該子項屬性指定 Meta 資料。表 8 顯示屬性名稱及說明。

表 8. MO_MQWorkflow_ProcessTemplateConfig Meta 物件屬性
屬性名稱 說明 接受值
ProcessTemplateName(必要) 要執行之 WebSphere MQ Workflow 範本的名稱。預設值 = 無 任意
ProcessInstanceName 要執行之 WebSphere MQ Workflow 實例的名稱。不適用於非同步執行模式。

預設值 = 如果留為空白,會建立新的程序範本實例。

任意
KeepName 指示使用後是否應捨棄程序的旗標。

預設值 = false

truefalse
UserID 識別具有執行程序之權限的使用者。這與連接器特有內容 ApplicationUserID 相同。如需此屬性的重要限制,請參閱ApplicationUserID

預設值 = 連接器配置內容 ApplicationUserID 的值

任意
ResponseTimeout 等待 WebSphere MQ Workflow 回應的時間量 (毫秒)。正值表示要求連接器等待回應。負值則會使連接器在向 WebSphere MQ Workflow 輸入佇列發出要求之後便順利返回。

預設值 = -1

整數
TimeoutFatal 如果 WebSphere MQ Workflow 未收到回應,則連接器會將 BON_APPRESPONSETIMEOUT 傳回到 InterChange Server,並終止連接器代理程式。

預設值 = false (如果 ResponseTimeout 小於 0,則不適用)

truefalse
ExecutionMode 判斷程序與協同作業是要非同步執行或同步執行。當此模式為 Asynchronous 時,會建立並執行新的程序範本實例。PID 會傳回給協同作業以便進行追蹤之用。當此模式為 Synchronous 時,會執行程序範本的實例 (現有的或新的實例)。工作流程程序一旦完成,會立即將商業物件結果傳回給協同作業。

預設值 = Synchronous

AsynchrounousSynchronous

MO_MQWorkflow_ContainerInfo

WebSphere MQ Workflow 發出的活動呼叫 (ActivityImplInvoke)訊息,除商業物件之外還可以選擇性地保留儲存區資訊。可以將此儲存區資訊對映到子項 Meta 物件 MO_MQWorkflow_ContainerInfo (如已定義) 並發佈到訂閱協同作業。它包括了 WebSphere MQ Workflow 所提供,關於程序產生狀況及環境的資訊。

註:
MO_MQWorkflow_ContainerInfo Meta 資料僅用於參考資訊用途。根據處理模式或起始要求程序的使用者角色,協同作業可能會忽略該 meta 資料或採取其他不同的動作。

連接器會讀取最上層商業物件的應用程式特有資訊,並尋找名稱值組:

cw_mo_wfcontainer=XXX
 

其中 XXX 為要輸入最上層商業物件資訊的子項屬性名稱。此資訊沒有連接器的值,且不用於處理商業物件。將此資訊作為商業物件的一部份傳遞到連接器並不會有影響。

以下是 MO_MQWorkflow_ContainerInfo 定義。

[ReposCopy]
  
       Version = 3.1.0
 [End]
 [BusinessObjectDefinition]
   Name = MO_MQWorkflow_ProcessInfo
 Version = 1.0.0
  
  
    [Attribute]
     Name = Role
    Type = String
    Cardinality = 1
    MaxLength = 255
    IsKey = true
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
 [End]
    [Attribute]
     Name = Organization
    Type = String
    Cardinality = 1
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
 [End]
    [Attribute]
     Name = ProcessAdministrator
    Type = String
    Cardinality = 1
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
 [End]
    [Attribute]
     Name = Duration
    Type = String
    Cardinality = 1
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
 [End]
    [Attribute]
    Name = ObjectEventId
    Type = String
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
 [End]
  
    [Verb]
    Name = Create
 [End]
  
    [Verb]
    Name = Delete
 [End]
  
    [Verb]
    Name = Retrieve
 [End]
  
    [Verb]
    Name = Update
 [End]
 [End]
 [BusinessObjectDefinition]
 Name = MO_MQWorkflow_ActivityInfo
 Version = 1.0.0
  
    [Attribute]
     Name = Priority
    Type = String
    Cardinality = 1
    MaxLength = 255
    IsKey = true
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
 [End]
    [Attribute]
     Name = MembersOfRoles
    Type = String
    Cardinality = 1
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
 [End]
    [Attribute]
     Name = CoordinatorOfRole
    Type = String
    Cardinality = 1
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
 [End]
    [Attribute]
     Name = Organization
    Type = String
    Cardinality = 1
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
 [End]
    [Attribute]
     Name = OrganizationType
    Type = String
    Cardinality = 1
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
 [End]
    [Attribute]
     Name = LowerLevel
    Type = String
    Cardinality = 1
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
 [End]
    [Attribute]
     Name = UpperLevel
    Type = String
    Cardinality = 1
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
 [End]
    [Attribute]
     Name = People
    Type = String
    Cardinality = 1
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
 [End]
    [Attribute]
     Name = PersonToNotify
    Type = String
    Cardinality = 1
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
 [End]
    [Attribute]
     Name = Duration
    Type = String
    Cardinality = 1
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
 [End]
    [Attribute]
     Name = Duration2
    Type = String
    Cardinality = 1
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
 [End]
    [Attribute]
    Name = ObjectEventId
    Type = String
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
 [End]
  
    [Verb]
    Name = Create
 [End]
  
    [Verb]
    Name = Delete
 [End]
  
    [Verb]
    Name = Retrieve
 [End]
  
    [Verb]
    Name = Update
 [End]
 [End]
 [BusinessObjectDefinition]
 Name = MO_MQWorkflow_ContainerInfo
 Version = 1.0.0
  
    [Attribute]
     Name = PROCESS_INFO
     Type = MO_MQWorkflow_ProcessInfo
    ContainedObjectVersion = 1.0.0
    Relationship = Containment
    Cardinality = 1
    MaxLength = 1
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
 [End]
    [Attribute]
     Name = ACTIVITY_INFO
     Type = MO_MQWorkflow_ActivityInfo
    ContainedObjectVersion = 1.0.0
    Relationship = Containment
    Cardinality = 1
    MaxLength = 1
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
 [End]
    [Attribute]
     Name = ACTIVITY
    Type = String
    Cardinality = 1
    MaxLength = 1
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
 [End]
    [Attribute]
     Name = PROCESS
    Type = String
    Cardinality = 1
    MaxLength = 1
    IsKey = true
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
 [End]
    [Attribute]
     Name = PROCESS_MODEL
    Type = String
    Cardinality = 1
    MaxLength = 1
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
 [End]
    [Attribute]
    Name = ObjectEventId
    Type = String
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
 [End]
  
    [Verb]
    Name = Create
 [End]
  
    [Verb]
    Name = Delete
 [End]
  
    [Verb]
    Name = Retrieve
 [End]
  
    [Verb]
    Name = Update
 [End]
 [End]
 

MO_MQWorkflow_ProcessInstance

WebSphere MQ Workflow 為回應程序執行會選擇性地傳回程序實例 ID (PID)。當建立或執行工作流程程序順利完成時, 連接器會在此物件中輸入程序的詳細資料。如果與起始協同作業並行執行程序,則協同作業可以使用 PID 來控制程序實例 (如果程序與協同作業非同步執行的話)。

連接器會讀取母項商業物件的應用程式特有資訊,並尋找名稱值組:

cw_mo_wfpid
 

=XXX

其中 XXX 是子項屬性的名稱,該子項屬性應含有程序實例 Meta 資料。物件必須符合 XML 資料處理常式闡明的需求。而且,子項物件中的屬性名稱具有連接器的語意值。物件的應用程式特有資訊必須包括 『ProcessInstance』。

強烈建議從此範例衍生所有自訂物件。

表 9. MO_MQWorkflow_ProcessTemplateInstance Meta 物件屬性
屬性名稱 說明 接受值
ProcInstID 識別程序實例的主要索引鍵 任意
ProcessInstName 請參閱 WebSphere MQ Workflow programming guide。
ProcInstParentName 請參閱 WebSphere MQ Workflow programming guide。
ProcInstTopLevelName 請參閱 WebSphere MQ Workflow programming guide。 任意
ProcInstDescription 請參閱 WebSphere MQ Workflow programming guide。 整數
ProcInstState 程序狀態 SuspendedResumedTerminated
LastStateChangeTime 請參閱 WebSphere MQ Workflow programming guide。 AsynchronousSynchronous
LastModificationTime 請參閱 WebSphere MQ Workflow programming guide。
ProcTempID 請參閱 WebSphere MQ Workflow programming guide。
ProcTempIName 請參閱 WebSphere MQ Workflow programming guide。
Icon 請參閱 WebSphere MQ Workflow programming guide。
Category 請參閱 WebSphere MQ Workflow programming guide。

MO_MQWorkflow_ActivityRequest

當 WebSphere MQ Workflow 程序實例發出活動呼叫 (ActivityImplInvoke) 訊息且符合下列條件時:

連接器會從 ActivityImplInvoke 訊息摘錄活動資訊。此活動資訊對映到子項 Meta 物件 MO_MQWorkflow_ActivityRequest,然後發佈到訂閱協同作業。

連接器會讀取最上層商業物件的應用程式特有資訊,並尋找下列名稱值組:

cw_mo_wfactivityrequest
 

=XXX

其中 XXX 為要輸入最上層商業物件資訊的子項屬性名稱。此資訊既不是連接器的值,也不用於處理商業物件。表 10 顯示屬性名稱及說明


表 10. MO_MQWorkflow_ActivityRequest 屬性
屬性名稱 說明 接受值
ActImplCorrelID
 
將由程序實例發出的
ActivityImplInvoke
 

訊息與

ActivityImplInvokeResponse
 

訊息關聯起來的 ID。協同作業會使用

ActImplCorrelID
 

將回應傳送到連接器

任意
Starter
 
起始程序實例的使用者 ID 任意
ProcTemplID
 
程序範本的 ID。 任意
ProgramName
 
程序實例所呼叫的程式名稱 任意
ResponseRequired
 
識別程序 (或實例) 是否預期 ActivityImplInvokeResponse 訊息 YesNoIfError
ExternalProcessContext
 
程序實例的程序環境定義 任意

MO_MQWorkflow_ActivityResponse

若要使回應與要求產生關聯,連接器需要最上層商業物件包括具有適當資訊的 Meta 物件。此 Meta 物件包括某些資訊,這些資訊主要關於相關 ActivityImplInvoke 訊息的 ActImplCorrelID、與程序實例相關聯的使用者 ID (Starter),以及鏈結至程序實例的回覆碼。當協同作業建立 ActivityImplInvokeResponseActivityImplInvoke 訊息的關聯性時,需要此 Meta 物件。

連接器會讀取最上層商業物件的應用程式特有資訊,並尋找下列名稱值組:

cw_mo_wfactivityrequest
 

=XXX

其中 XXX 是子項屬性的名稱,該子項屬性指定 Meta 資料。表 11 顯示屬性名稱及說明


表 11. MO_MQWorkflow_ActivityResponse 屬性
屬性名稱 說明 接受值
ActImplCorrelID
 
程序實例藉由此 ID 將回應與相關聯之
ActivityImplInvoke
 

訊息呼叫的要求關聯起來。

任意
Starter
 
起始與 ActivityImplInvoke 訊息相關聯之程序實例的使用者 ID 任意
ReturnCode
 
向程序實例發出的回覆碼 整數

應用程式特有資訊

母項商業物件層次之應用程式特有資訊的結構是名稱值組的格式,且以分號來區隔。空格會被忽略。例如:

cw_mo_wfptcfg=CUST_Config;cw_mo_pid=CUST_IN_Nieman
 

Copyright IBM Corp. 1997, 2003