プロジェクトメソッドを作成したら、名称やプロパティを変更できます。プロジェクトメソッドのプロパティは主に実行アクセスやセキュリティ条件(ユーザー、統合されたサーバーやサービスからのアクセスの可否)に加えて、実行モードに関する設定が含まれます。
他のタイプのメソッドには専用のプロパティがありません。これらのメソッドのプロパティは、それらが関連付けられているオブジェクトに基づいて決定されます。
プロジェクトメソッドのプロパティを変更するには:
- メソッドエディターでメソッドメニューからメソッドプロパティ...を選択します。
または
エクスプローラーのメソッドページでプロジェクトメソッドを選択し、コンテキストメニューまたはオプションメニューからメソッドプロパティ...を選択します。
メソッドプロパティダイアログボックスが表示されます。

注: 一回の処理で複数のプロジェクトメソッドの属性を設定するために、属性の一括設定を使用できます (属性一括設定参照)。
メソッドプロパティウィンドウの"名前"エリアまたはエクスプローラーでプロジェクトメソッド名を変更できます。
新しい名前は4Dの命名規則に沿っていなければなりません (4Dランゲージリファレンスマニュアルの識別子参照)。同じ名前のメソッドが既に存在する場合、4Dはその旨を知らせるダイアログを表示します。名称を変更したら、4Dはメソッドリストをソートします。
警告: プロジェクトメソッドの名前を変更すると、そのメソッドを呼び出している他のメソッドやメニューの機能が無効になるリスクがあります。このため名称変更で説明されているメソッド名の名称変更機能を使用することを強く推奨します。この機能を使用すれば、データベース中でメソッド名が参照されている箇所がすべて自動的に変更されます (ただしEXECUTE METHODなど文字列としてメソッド名が参照される個所を除きます)。
4D Serverでは変更はサーバーに反映されます。複数のユーザーが同時に名称を変更しようとすると、最後に行われた変更の名称が適用されます。メソッドのオーナーを指定すれば特定のユーザーしかメソッド名を変更できないようにできます。
注: プロジェクトメソッド以外のメソッドの名称を変更することはできません。
属性を使用して、プロジェクトメソッドがどの版で利用可能かを設定できます。エクスプローラーを使用して複数のメソッドに対し属性をいかっつして設定することもできます (後述)。
特定のメソッドを、ユーザーに対し実行メニューのメソッド...から実行させたくない場合、このオプションを選択すればそのメソッドを非表示にできます。非表示のメソッドはメソッド実行ダイアログボックスに表示されなくなります (メソッド実行ダイアログボックスからメソッド実行参照)。
プロジェクトメソッドを非表示にしても、データベースプログラマーはそれを使用することができます。メソッドを非表示にしてもエクスプローラーのCurrent form tableやメソッドエディターのメソッドリストには表示されます。
この属性はコンポーネントのフレームワークで使用されます。このオプションが選択されていると、アプリケーションがホストデータベースとして実行されている場合、そのメソッドがコンポーネントから実行可能になります。またアプリケーションがコンポーネントとして実行されている場合、そのメソッドはホストデータベースから実行可能となります。
コンポーネントについては4Dコンポーネントの開発とインストールを参照してください。
この属性はクライアント/サーバーモードの4Dアプリケーションでのみ考慮されます。このオプションが選択されていると、そのプロジェクトメソッドは常にサーバー上で実行されます。
このオプションに関する詳細は4D Serverリファレンスマニュアルのサーバー上で実行属性を参照してください。
このオプションを使用すると、メソッドがプリエンプティブモードでの実行が可能であることを宣言できます。デフォルトでは、4Dはアプリケーション内でのプロジェクトメソッドは全てコオペラティブモードで実行されます。プリエンプティブモード機能を利用したい場合、プリエンプティブモードで開始したいメソッドを全て明示的に宣言する必要があります。その後コンパイラがこれらのメソッドが実際にスレッドセーフであるかどうかをチェックします。
注: プリエンプティブモードでの実行は、コンパイルモードの4Dでのみ利用可能です。より詳細な情報については、プリエンプティブ4Dプロセスの章を参照して下さい。
以下のオプションが提供されています:
- プリエンプティブプロセスで実行可能: このオプションをチェックすると、メソッドがプリエンプティブプロセスでの実行が可能であると宣言し、可能な場合にはプリエンプティブモードで実行するべきと宣言します。メソッドの "プリエンプティブ" プロパティは "capable" に設定されます。
このオプションがチェックされていた場合、4Dコンパイラーはメソッドが実際にプリエンプティブモードで実行可能かどうかを検証し、そうでない場合 (例えば、プリエンプティブモードで実行不可能なコマンドやメソッドを直接的あるいは間接的に呼び出している場合など) にはエラーを返します。その場合にはメソッドを編集してスレッドセーフにするか、あるいは別のオプションを選択します。
メソッドのプリエンプティブ性が証明されると、内部で "thread safe" というタグ付けがされ、すべての要件が満たされればプリエンプティブモードで実行されます。このプロパティはプリエンプティブモードの資格を定義しますが、メソッドが実際にプリエンプティブモードで実行されることを保証するものではありません。実行モードは特定のコンテキストを必要とするからです ( を参照して下さい)。
- プリエンプティブプロセスでは実行不可: このオプションをチェックすると、メソッドがプリエンプティブモードで実行されてはならないと宣言し、以前の 4Dのバージョンと同じように常にコオペラティブモードで実行されます。"プリエンプティブ" プロパティは "incapable" に設定されます。
このオプションがチェックされている場合、4Dコンパイラーはメソッドがプリエンプティブに実行可能かどうかを検証しません。メソッドは内部で自動的に "thread unsafe" とタグ付けされます (例え理論的にはスレッドセーフであってもです)。ランタイムに呼び出された場合、このメソッドは同じスレッド内の他のメソッドを "汚染" し、例え他のメソッドがスレッドセーフであったとしても、スレッド実行はコオペラティブモードを強制されます。
- 特に設定しない (デフォルト): このオプションをチェックすると、メソッドのプリエンプティブプロパティを管理したくないということを宣言します。メソッドの "プリエンプティブ" プロパティは "indifferent" に設定されます。
このオプションがチェックされているとき、4Dコンパイラーはメソッドのプリエンプティブな実効性を評価し、内部的に "thread safe" あるいは "thread unsafe" のタグ付けをします。プリエンプティブ実行に関するエラーは報告されません。メソッドがスレッドセーフと評価されていれば、実行時にプリエンプティブコンテキストから呼び出された場合にはプリエンプティブスレッド実行を禁止しません。逆に、メソッドがスレッドアンセーフであると評価された場合には、呼び出されたときにどのようなプリエンプティブスレッド実行も許可しません。
このオプションを使用した場合、内部でのスレッドセーフの評価に関わらず、メソッドが 4Dから最初の親メソッドとして直接呼び出された場合 (例えばNew process コマンドから呼び出された場合など)、メソッドは必ずコオペラティブモードで実行されます。内部で "スレッドセーフ" とタグ付けされていた場合には、そのタグは呼び出しチェーン内の他のメソッドから呼び出された場合に限り考慮されます。
特殊なケース: メソッドのコンポーネントとホスト間で共有プロパティがチェックされていた場合(プロジェクトメソッドプロパティ 参照)、特に設定しないオプションを選択した場合にはメソッドは自動的にスレッドアンセーフであるとタグ付けされます。共有コンポーネントメソッドをスレッドセーフにしたい場合には、プリエンプティブプロセスで実行可能オプションを明示的に選択する必要があります。
利用範囲属性はメソッドを呼び出しが明示的に許可された外部サービスを指定します。
この属性を使用してSOAPリクエストに応答するようメソッドを構成することができます。詳細はWeb サービスの公開と使用を参照してください。このオプションを選択すると、WSDLで公開するオプションを選択できるようになります。
エクスプローラーではWebサービスとして提供されるプロジェクトメソッドには以下のアイコンが表示されます
。
注: メソッド名がXMLの命名規則に準拠しない文字 (例えばスペース) を含む場合、そのメソッドをWebサービスとして公開することはできません。この場合、設定は保存できません。
この属性は"Webサービス"属性が設定されたメソッドでのみ設定できます。この属性を設定すると、そのメソッドが4DアプリケーションのWSDLに含まれます。詳細はWSDL ファイルを生成するを参照してください。
エクスプローラーではWSDLで公開されたWebサービスメソッドには以下のアイコンが表示されます
。
このオプションは4D Webサーバーのセキュリティを強化するために使用されます。このオプションが選択されていない場合、そのメソッドは4DACTIONを使用したHTTPリクエスト、および4DSCRIPT/4DTEXT/4DHTMLタグ (さらには4DVARや4DHTMLVARタグ) から直接呼び出すことができません。詳細は4DランゲージリファレンスマニュアルのURLとフォームアクション と 4D 変換タグを参照してください。
エクスプローラー中ではこの属性が設定されたプロジェクトメソッドには特別なアイコンが表示されます
。
セキュリティのためこのオプションはデフォルトで選択されていません。Web機能から直接呼び出されるメソッドには明示的にこのオプションを選択しなければなりません。
この属性が選択されていると、そのプロジェクトメソッドは4DのSQLエンジンから実行可能となります。デフォルトでは選択されておらず、明示的に許可されない限り、4Dメソッドを4D SQLエンジンから呼び出すことはできません。
このプロパティはすべての内部および外部SQLクエリ (ODBCドライバー経由、Begin SQL/End SQL タグ内のSQLコード、またはQUERY BY SQLからの呼び出し) に適用されます。
注:
- メソッドに"SQL"属性が設定されていても、メソッドの実行時にはデータベース設定およびメソッドプロパティに設定されたアクセス権が考慮されます。
- ODBCのSQLProcedure関数は"SQL"属性が設定されているプロジェクトメソッド名のみを返します。
詳細はSQLマニュアルの4Dと4D SQLエンジン統合の原則を参照してください。
このオプションは、旧式のカレントレコードおよびカレントセレクションの概念に依存しているため、廃止予定となっています。REST アクセスにはORDA データモデルクラスファンクション を使用することが推奨されています。
ユーザーグループをアクセス権およびオーナーに設定して、メソッドへのアクセスを制御できます。ユーザーやグループの作成とその有効化についてはユーザー&グループを参照してください。
- "アクセスグループ"ドロップダウンリストではそのメソッドを実行できるグループを設定します。指定されたグループに属さないユーザーがメソッドを実行しようとすると、4Dはユーザーにメソッド実行権限がない旨のメッセージを表示します。
- "オーナーグループ"ドロップダウンリストではデザインモードでそのメソッドを編集できるグループを設定します。指定されたグループに属さないユーザーがメソッドの編集を試みると、4Dはユーザーにメソッド編集権限がない旨のメッセージを表示します。
両方のグループの属するユーザーは制限なしにそのメソッドを編集および実行できます。
"メソッド属性"ダイアログボックスを使用して、一回の操作で複数のプロジェクトメソッドに対して属性を設定することができます。この機能は多数のプロジェクトメソッドの属性を一括して設定する場合に便利です。
メソッド属性の一括設定を行うには:
- エクスプローラーのメソッドページ からオプションメニューを展開し、属性一括設定...コマンドを選択します。

"メソッド属性"ダイアログボックスが表示されます:

- "検索するメソッド名"エリアに属性を一括設定するメソッドを決定するための名前条件を入力します。
入力した文字列を使用してメソッド名が検索されます。
"@"をワイルドカード文字として使用し、メソッドグループを選択できます。すべてのメソッドを選択するには"@"のみを入力します。
注:
- 大文字と小文字は区別されません。
- "@"は複数回使用できます (例: "dtro_@web@pro@")
- "更新属性"エリアではドロップダウンリストから更新対象の属性を選択し、True または False ラジオボタンを選択します。
注: "WSDLとして公開"属性をTrueに設定しても、この属性は"Webサービスとして公開"属性がTrueに設定されたメソッドにのみ適用されます。 - 適用をクリックします。
属性変更は検索条件に合致するメソッドに対し、即座に反映されます。