IBM FileNet P8, バージョン 5.2.1            

タスク・オブジェクトの操作

以下のコード例は、タスク関連の操作を示しています。タスクの機能の概要については、タスクを参照してください。

タスク・サブクラスの作成

タスク・インスタンスは、基本の CmTask クラスのサブクラスからのみ作成できます。以下の Java™ および C# の例では、CmTask サブクラスの作成方法を示します。 サブクラスの 2 つのシステム・プロパティー定義は デフォルト値を使用して設定され、カスタム・プロパティー定義が追加されます。

Java の例

// 基本タスクのクラス定義をサーバーからフェッチ
ClassDefinition objClassDef = Factory.ClassDefinition.fetchInstance(store, ClassNames.CM_TASK, null);
    	
// CmTask クラスのサブクラスを作成
ClassDefinition objSubClassDef = objClassDef.createSubclass();

// ロケールおよび名前サブクラスを設定する
LocalizedString objLocStr = Factory.LocalizedString.createInstance();
objLocStr.set_LocalizedText("Flood Claim Task Subclass");
objLocStr.set_LocaleName(store.get_LocaleName());
objSubClassDef.set_DisplayNames(Factory.LocalizedString.createList());
objSubClassDef.get_DisplayNames().add(objLocStr);
objSubClassDef.set_SymbolicName("fcTaskSubclass");
        
// Set default values on PreCondition and PostCondition property definitions.
PropertyDefinitionList objPropDefs = objSubClassDef.get_PropertyDefinitions(); 
ListIterator iter = objPropDefs.listIterator();
PropertyDefinitionString objPropDef = null;
String objPropDefSymbolicName = null;

// PreCondition および PostCondition が見つかるまでプロパティー定義を反復処理
for (int i=0; i < objPropDefs.size(); i++)
{
   objPropDefSymbolicName = ((PropertyDefinition) objPropDefs.get(i)).get_SymbolicName();
   if (objPropDefSymbolicName.equalsIgnoreCase("PreCondition"))
   {
      objPropDef = (PropertyDefinitionString) objPropDefs.get(i);
      Property prop = objPropDef.getProperties().get("PropertyDefaultString");
      prop.setObjectValue("Coordinator SATISFIES (VersionStatus=1)" );
   }
   if (objPropDefSymbolicName.equalsIgnoreCase("PostCondition"))
   {
      objPropDef = (PropertyDefinitionString) objPropDefs.get(i);
      Property prop = objPropDef.getProperties().get("PropertyDefaultString");
      prop.setObjectValue("Coordinator SATISFIES (ClaimStatus='CLOSED')" );
   }
}

/* 既存のカスタム・プロパティー定義をサブクラスに追加
 * プロパティー定義の目的を表すようにサブクラスのインスタンスの名前を指定*/
PropertyTemplateString objPropTemplate = Factory.PropertyTemplateString.fetchInstance
   (store, new Id("{7C6FF644-285F-44DD-B7B7-5A6080CE1291}"), null);
// プロパティー・テンプレートからプロパティー定義を作成
objPropDef = (PropertyDefinitionString)objPropTemplate.createClassProperty();
// サブクラスに新規プロパティー定義を追加
objPropDefs.add(objPropDef);

// タスク・サブクラスをサーバーに保存
objSubClassDef.save(RefreshMode.REFRESH); 

C# の例

// 基本タスクのクラス定義をサーバーからフェッチ
IClassDefinition objClassDef = Factory.ClassDefinition.FetchInstance(store, 
   GuidConstants.Class_CmTask, null);

// ICmActivity クラスのサブクラスを作成
IClassDefinition objSubClassDef = objClassDef.CreateSubclass();

// ロケールおよび名前サブクラスを設定する
ILocalizedString objLocStr = Factory.LocalizedString.CreateInstance();
objLocStr.LocalizedText = ("Flood Claim Task Subclass");
objLocStr.LocaleName = store.LocaleName;
objSubClassDef.DisplayNames = Factory.LocalizedString.CreateList();
objSubClassDef.DisplayNames.Add(objLocStr);
objSubClassDef.SymbolicName = "fcTaskSubclass";
        
// Set default values on PreCondition and PostCondition property definitions.
IPropertyDefinitionList objPropDefs = objSubClassDef.PropertyDefinitions; 
String objPropDefSymbolicName = null;

// PreCondition および PostCondition が見つかるまでプロパティー定義を反復処理
foreach (IPropertyDefinition objPropDef in objPropDefs)
{
   objPropDefSymbolicName = objPropDef.SymbolicName;
   if (objPropDefSymbolicName.Equals("PreCondition"))
   {
      IProperty prop = objPropDef.Properties.GetProperty("PropertyDefaultString");
      prop.SetObjectValue("Coordinator SATISFIES (VersionStatus=1)");
   }
   if (objPropDefSymbolicName.Equals("PostCondition"))
   {
      IProperty prop=objPropDef.Properties.GetProperty("PropertyDefaultString");
      prop.SetObjectValue("Coordinator SATISFIES (ClaimStatus='CLOSED')" );
   }
}

/* 既存のカスタム・プロパティー定義をサブクラスに追加
 * プロパティー定義の目的を表すようにサブクラスのインスタンスの名前を指定*/
IPropertyTemplateString objPropTemplate = Factory.PropertyTemplateString.FetchInstance(
   store, new Id("{7C6FF644-285F-44DD-B7B7-5A6080CE1291}"), null);
// プロパティー・テンプレートからプロパティー定義を作成
IPropertyDefinitionString objPropDefString = (IPropertyDefinitionString)objPropTemplate.CreateClassProperty();
// サブクラスに新規プロパティー定義を追加
objPropDefs.Add(objPropDefString);
 
// タスク・サブクラスをサーバーに保存
objSubClassDef.Save(RefreshMode.REFRESH);

タスク・インスタンスの作成

タスク・サブクラスからのインスタンスの作成方法を、次の Java および C# の例に示します。

Java の例

// 前の例で作成した task サブクラスからインスタンスを作成
CmTask task = Factory.CmTask.createInstance(store, "FloodClaimTaskSubclass");

// Document オブジェクトを使用して Coordinator プロパティーを設定
Document activityCoordinator = Factory.Document.getInstance(store, ClassNames.DOCUMENT,
   new Id("{486F9C7F-DD8C-4EB9-A7CC-98A3A4DAD1EB}"));
task.set_Coordinator(activityCoordinator);

// インスタンスの名前を指定するカスタム・プロパティーを設定
task.getProperties().putValue("taskName", "Flood Claim Task Instance");

// Save task instance to the server.
task.save(RefreshMode.REFRESH);

C# の例

// 前の例で作成した task サブクラスからインスタンスを作成
ICmTask task = Factory.CmTask.CreateInstance(store, "FloodClaimTaskSubclass");
           
// Document オブジェクトを使用して Coordinator プロパティーを設定
IDocument activityCoordinator = Factory.Document.GetInstance(store, ClassNames.DOCUMENT,
   new Id("{486F9C7F-DD8C-4EB9-A7CC-98A3A4DAD1EB}"));
task.Coordinator = activityCoordinator;

// インスタンスの名前を指定するカスタム・プロパティーを設定
task.Properties["taskName"] = "Flood Claim Task Instance";

// タスク・インスタンスをサーバーに保存
task.Save(RefreshMode.REFRESH);

タスク状態の昇格

タスク・インスタンスの状態の昇格方法を、次の Java および C# の例に示します。

Java の例

// 前の例で作成した task インスタンスをフェッチする
CmTask task = Factory.CmTask.fetchInstance(store, 
   new Id("{D0544111-24FC-4B9E-A905-DFFDBEC733B7}"), null);

// 現在の状態を出力し、タスクを昇格し、新規の状態を出力する
try
{
   System.out.println("Current state is " + task.get_TaskState().toString());
   task.changeState(LifecycleChangeFlags.PROMOTE);
   task.save(RefreshMode.REFRESH);
   System.out.println("New state is " + task.get_TaskState().toString());
}
catch (Exception e)
{
   System.out.println("Error: " + e.getMessage());
}

C# の例

// 前の例で作成した task インスタンスをフェッチする
ICmTask task = Factory.CmTask.FetchInstance(store, 
   new Id("{4B8AEBA2-8F3F-4010-AAAC-6BFF64695677}"), null);

// 現在の状態を出力し、タスクを昇格し、新規の状態を出力する
try
{
   System.Console.WriteLine("Current state is " + task.TaskState);
   task.ChangeState(LifecycleChangeFlags.PROMOTE);
   task.Save(RefreshMode.REFRESH);
   System.Console.WriteLine("New state is " + task.TaskState);
}
catch (Exception e)
{
   System.Console.WriteLine("Error: " + e.Message);
}


最終更新日: 2015 年 10 月
activity_procedures.htm

© Copyright IBM Corp. 2015.