---
schema_version: "1"
id: fa15286aa23536f4026ac0657379e9d48b6c8340929000cdf2ae0f091c0b8018
title: Mule SDK での関数の寄稿
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/mule-sdk/1.1/functions.md
canonical_url: https://docs.mulesoft.com/jp/mule-sdk/1.1/functions
source_site: docs.mulesoft.com
content_type: documentation
content_hash: f23257e1f395120d0b9d77d93b47b66f19b005184552a7d6856c05727f996f74
description: MuleSoft Documentation Site
release: "1.1"
latest: false
---
# Mule SDK での関数の寄稿

DataWeave は、Mule 4 の主要な式言語であり、Mule SDK もそれに準拠しています。そのため、Mule ​[操作](https://docs.mulesoft.com/jp/mule-sdk/1.1/operations)​をコーディングするのと同じように、モジュールのコードから DataWeave に関数を寄稿することができます。カスタム関数を使用することで、新しい方法でコードが再利用できるようになり、単一モジュール内で機能が追加され、宣言方法に関するオーバーヘッドも Mule 操作と比較して非常に少なくて済みます。

## [](#関数の宣言)関数の宣言

Extension レベルで ​`@ExpressionFunctions`​ アノテーションを使用することで、DataWeave 関数を表す公開メソッドを含むクラスを参照できます。このメソッドのコードは、名前を識別子として DataWeave スクリプトから直接実行されます。

```java
@Extension(name = "Docs")
@ExpressionFunctions(DocsFunction.class)
public class DocsModule {

}
```

この例は、​`DocsFunction`​ クラスで次のメソッドを定義しています。

```java
public Object xpath(@Optional(defaultValue = PAYLOAD) InputStream item,
                    String expression){
    try {
      return xPathFactory.newXPath().evaluate(expression, documentBuilder.parse(item));
    } catch (Exception e) {
      return null;
    }
  }
```

この ​`xpath`​ 関数は、DataWeave スクリプト内から使用して、​_モジュールの名前空間内で_​​参照できます。

次の例では XML を読み取って、新しい ​`xpath`​ 関数を使用して XPath 検索条件を設定しています。

```xml
<flow name="xpathFunctionUsingPayloadAsDefault">
  <file:read path="files/bookstore.xml"/>
  <set-payload value="#[Docs::xpath("/bookstore/book[price>35]/title")]"/>
</flow>
```

上記の簡素化された例の実際の実装は、 [XPathFunction.java](https://github.com/mulesoft/mule-xml-module/blob/1.3.3/src/main/java/org/mule/module/xml/internal/xpath/XPathFunction.java)​ を参照してください。

## [](#制限-設定と接続には非対応)制限: 設定と接続には非対応

定義上、関数は特定の​[設定](https://docs.mulesoft.com/jp/mule-sdk/1.1/configs)​や​[接続](https://docs.mulesoft.com/jp/mule-sdk/1.1/connections)​に依存したり、それらを受け取ったりすることはできません。