XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEWorkflow

【WinUI】XFE基于windows的工作流

公开
关注 0 Fork 0 Star 0
UTF-8
{
  "schemaVersion": 1,
  "id": "sample-wecom-contacts-fields-log",
  "name": "企业微信 · 读取联系人 ID 和名称",
  "description": "先在插件中心连接已登录的企业微信,再手动运行。遍历本机已加载的联系人缓存,在 body 子图使用两个“读取对象字段”节点分别读取 id 和 displayName;字段值经“转换为文本”输出,可连接其他节点。日志消息全部由数据连线提供,固定消息参数为空,不需要表达式,也不修改原始联系人。每位联系人只输出 ID 和名称两条日志;结果完整保留原始联系人。completeRoster=false,不保证完整通讯录;不发送消息。",
  "enabled": false,
  "priority": 0,
  "kind": "Graph",
  "graph": {
    "nodes": [
      {
        "id": "array-start",
        "capabilityId": "core.start",
        "name": "开始",
        "x": 160,
        "y": 180,
        "parameters": {}
      },
      {
        "id": "contacts-query",
        "capabilityId": "xfe.wecom.contacts",
        "name": "读取本机缓存联系人",
        "x": 620,
        "y": 180,
        "parameters": {
          "query": ""
        }
      },
      {
        "id": "array-foreach",
        "capabilityId": "core.foreach",
        "name": "逐个遍历联系人",
        "x": 1080,
        "y": 180,
        "parameters": {},
        "children": {
          "body": {
            "nodes": [
              {
                "id": "item-start",
                "capabilityId": "core.start",
                "name": "本轮开始",
                "x": 160,
                "y": 180,
                "parameters": {}
              },
              {
                "id": "item-current",
                "capabilityId": "core.foreach.current",
                "name": "当前联系人",
                "x": 620,
                "y": 180,
                "parameters": {}
              },
              {
                "id": "contact-id",
                "capabilityId": "core.object.get",
                "name": "读取联系人 ID",
                "x": 1080,
                "y": 180,
                "parameters": {
                  "path": "id"
                }
              },
              {
                "id": "id-text",
                "capabilityId": "core.convert.string",
                "name": "ID 转为文本",
                "x": 1540,
                "y": 180,
                "parameters": {}
              },
              {
                "id": "log-id",
                "capabilityId": "core.log",
                "name": "输出联系人 ID",
                "x": 2000,
                "y": 180,
                "parameters": {}
              },
              {
                "id": "contact-name",
                "capabilityId": "core.object.get",
                "name": "读取联系人名称",
                "x": 1080,
                "y": 700,
                "parameters": {
                  "path": "displayName"
                }
              },
              {
                "id": "name-text",
                "capabilityId": "core.convert.string",
                "name": "名称转为文本",
                "x": 1540,
                "y": 700,
                "parameters": {}
              },
              {
                "id": "log-name",
                "capabilityId": "core.log",
                "name": "输出联系人名称",
                "x": 2000,
                "y": 700,
                "parameters": {}
              },
              {
                "id": "item-end",
                "capabilityId": "core.end",
                "name": "返回原始联系人",
                "x": 2460,
                "y": 700,
                "parameters": {}
              }
            ],
            "edges": [
              {
                "id": "item-execute-0",
                "fromNode": "item-start",
                "fromPort": "next",
                "toNode": "item-current",
                "toPort": "in",
                "kind": "Execution"
              },
              {
                "id": "item-execute-1",
                "fromNode": "item-current",
                "fromPort": "next",
                "toNode": "contact-id",
                "toPort": "in",
                "kind": "Execution"
              },
              {
                "id": "item-execute-2",
                "fromNode": "contact-id",
                "fromPort": "next",
                "toNode": "id-text",
                "toPort": "in",
                "kind": "Execution"
              },
              {
                "id": "item-execute-3",
                "fromNode": "id-text",
                "fromPort": "next",
                "toNode": "log-id",
                "toPort": "in",
                "kind": "Execution"
              },
              {
                "id": "item-execute-4",
                "fromNode": "log-id",
                "fromPort": "next",
                "toNode": "contact-name",
                "toPort": "in",
                "kind": "Execution"
              },
              {
                "id": "item-execute-5",
                "fromNode": "contact-name",
                "fromPort": "next",
                "toNode": "name-text",
                "toPort": "in",
                "kind": "Execution"
              },
              {
                "id": "item-execute-6",
                "fromNode": "name-text",
                "fromPort": "next",
                "toNode": "log-name",
                "toPort": "in",
                "kind": "Execution"
              },
              {
                "id": "item-execute-7",
                "fromNode": "log-name",
                "fromPort": "next",
                "toNode": "item-end",
                "toPort": "in",
                "kind": "Execution"
              },
              {
                "id": "current-id",
                "fromNode": "item-current",
                "fromPort": "item",
                "toNode": "contact-id",
                "toPort": "value",
                "kind": "Data"
              },
              {
                "id": "id-convert",
                "fromNode": "contact-id",
                "fromPort": "value",
                "toNode": "id-text",
                "toPort": "value",
                "kind": "Data"
              },
              {
                "id": "id-message",
                "fromNode": "id-text",
                "fromPort": "value",
                "toNode": "log-id",
                "toPort": "message",
                "kind": "Data"
              },
              {
                "id": "current-name",
                "fromNode": "item-current",
                "fromPort": "item",
                "toNode": "contact-name",
                "toPort": "value",
                "kind": "Data"
              },
              {
                "id": "name-convert",
                "fromNode": "contact-name",
                "fromPort": "value",
                "toNode": "name-text",
                "toPort": "value",
                "kind": "Data"
              },
              {
                "id": "name-message",
                "fromNode": "name-text",
                "fromPort": "value",
                "toNode": "log-name",
                "toPort": "message",
                "kind": "Data"
              },
              {
                "id": "item-return",
                "fromNode": "item-current",
                "fromPort": "item",
                "toNode": "item-end",
                "toPort": "result",
                "kind": "Data"
              }
            ]
          }
        }
      },
      {
        "id": "array-end",
        "capabilityId": "core.end",
        "name": "返回全部迭代结果",
        "x": 1540,
        "y": 180,
        "parameters": {}
      }
    ],
    "edges": [
      {
        "id": "array-execute-foreach",
        "fromNode": "array-start",
        "fromPort": "next",
        "toNode": "contacts-query",
        "toPort": "in",
        "kind": "Execution"
      },
      {
        "id": "array-execute-end",
        "fromNode": "array-foreach",
        "fromPort": "next",
        "toNode": "array-end",
        "toPort": "in",
        "kind": "Execution"
      },
      {
        "id": "array-collect-results",
        "fromNode": "array-foreach",
        "fromPort": "results",
        "toNode": "array-end",
        "toPort": "result",
        "kind": "Data"
      },
      {
        "id": "query-then-foreach",
        "fromNode": "contacts-query",
        "fromPort": "next",
        "toNode": "array-foreach",
        "toPort": "in",
        "kind": "Execution"
      },
      {
        "id": "query-contacts-array",
        "fromNode": "contacts-query",
        "fromPort": "contacts",
        "toNode": "array-foreach",
        "toPort": "items",
        "kind": "Data"
      },
      {
        "id": "query-complete-roster",
        "fromNode": "contacts-query",
        "fromPort": "completeRoster",
        "toNode": "array-end",
        "toPort": "completeRoster",
        "kind": "Data"
      }
    ]
  },
  "code": "",
  "inputs": [],
  "outputs": [
    {
      "name": "result",
      "label": "全部迭代结果",
      "type": "Array",
      "description": "每轮 body 子图的输出对象,按输入数组顺序排列。"
    },
    {
      "name": "completeRoster",
      "label": "是否完整通讯录",
      "type": "Boolean",
      "description": "当前原生接口只提供已加载的缓存联系人,此值为 false。"
    }
  ],
  "inputDefaults": {},
  "variables": {},
  "pluginVersions": {
    "xfe.wecom": "3.0.0"
  },
  "triggers": [],
  "modifiedAt": "2026-10-13T00:00:00+08:00"
}