这里的对象就是 ActionInvocation 
ActionInvocation的主执行逻辑
外部接口就调用这个方法来执行 invocation
968482
function () {
				if (index < count) { // 执行递归，进行下一轮检查
					inspectors[index++].inspect(this);
				} else if (index++ === count) { // 当inspector 都执行完毕后，执行 action
					if (action.isAction) {
						let instance = action.instance();
						instance.invoke(ctrler);
					} else {
						action.instance();
					}
					end();
				}
			}
1103956
@Override public void visitInvoke(Expr.Invoke expr, Boolean consumed) {
		visitExpressions(expr.getOperands(), true);
	}
984214
public String getActionResultText(String action, String params,
      TokenResult token, Object pFormData, String format) throws Exception {
    String queryUrl = siteurl + scriptPath + apiPath + "action=" + action
        + "&format=" + format;
    ClientResponse response;
    // decide for the method to use for api access
    response = this.getPostResponse(queryUrl, params, token, pFormData);
    String text = this.getResponseString(response);
    return text;
  }
851181
def action(a, c = nil)
      if !self.driver.in_driver_context?
        # Called from outside Driver. Send an async message to Driver.
        self.driver.message(:action, [a, c])
      else
        # Called from within Driver.
        if self.respond_to?(a)
          command = self.send(a)

          case command
            when String
              msg = "#{self.name} #{a}: #{command}"
              applog(self, :info, msg)

              system(command)
            when Proc
              msg = "#{self.name} #{a}: lambda"
              applog(self, :info, msg)

              command.call
            else
              raise NotImplementedError
          end
        end
      end
    end
859109
@Override
    public void actionPerformed(JTextComponent target, SyntaxDocument sDoc, int dot, ActionEvent e) {
        int pos = target.getCaretPosition();
        int start = sDoc.getParagraphElement(pos).getStartOffset();
        String line = ActionUtils.getLine(target);
        String lineToPos = line.substring(0, pos - start);
        String prefix = getIndent(line);
        Token t = sDoc.getTokenAt(pos);
        if (TokenType.isComment(t)) {
            if (line.trim().endsWith("*/")) {
                prefix = prefix.substring(0, prefix.length() - 1);
            } else if (line.trim().startsWith("*")) {
                prefix += "# ";
            } else if (line.trim().startsWith("##")) {
                prefix += "#";
            }
        } else if (lineToPos.trim().endsWith(":")) {
            // check if current line is not comment
            prefix += getTab(target);
        } else {

            String noComment = sDoc.getUncommentedText(start, pos);
            // skip EOL comments
            if (noComment.trim().endsWith(":")) {
                prefix += getTab(target);
            }
            if ((lineToPos.length() > 0) && (line.equals(prefix))) {
                if (prefix.length() > 0) {
                    prefix = prefix.substring(1);
                }
            }
            if ((lineToPos.length() == 0)) {
                if (prefix.length() > 0) {
                    prefix = "";
                }
            }
        }
        target.replaceSelection("\n" + prefix);
    }
202679
public void invokeRequest (ClientObject caller, byte[] serializedAction,
        InvocationService.ResultListener listener)
    {
        NodeRequest request = null;
        try {
            ObjectInputStream oin =
                new ObjectInputStream(new ByteArrayInputStream(serializedAction));
            request = (NodeRequest)oin.readObject();
            _injector.injectMembers(request);
            request.invoke(listener);

        } catch (Exception e) {
            log.warning("Failed to execute node request",
                        "from", (caller == null) ? "self" : caller.who(),
                        "request", request, "serializedSize", serializedAction.length, e);
            listener.requestFailed("Failed to execute node request");
        }
    }
605933
private function invokeRoute(): void
    {
        $moduleName = $this->routeInfo->moduleName;
        $controllerName = $this->routeInfo->controllerName;
        $actionName = $this->routeInfo->actionName;
        $controllerClass = $this->config->getValue('CONTROLLER_NAMESPACE') . '\\' . str_replace('.', '\\', $moduleName) . '\\' . $controllerName;
        if (! class_exists($controllerClass)) {
            $event = RouteErrorEvent::createCustom(404, $moduleName . '/' . $controllerName . '/' . $actionName . '对应的控制器类' . $controllerClass . '不存在');
            $event->httpErrorCode = 404;
            $this->dispatchEvent($event);
            return;
        }
        // 执行操作
        $this->invokeAction(new $controllerClass(), $actionName);
    }
727814
@Override
    public void forEachRemaining(Consumer<? super U> action) {

        source.forEachRemaining(e->{
            action.accept( current=function.apply(current,e));

        });

    }
584787
public void writeInvocation(StoredProcedureInvocation invocation) throws IOException {
        int len = invocation.getSerializedSize();
        growIfNeeded(len);
        invocation.flattenToBuffer(buffer.b());
    }
844780
public void actionPerformed(ActionEvent e) {
        String cmd = e.getActionCommand();
        int returnValue = -1;
        if (cmd.equals("Cut") || cmd.equals("Copy") || cmd.equals("Paste")) {
            JInternalFrame f = getSelectedFrame();
            if (f != null && f instanceof ActionListener) {
                ((ActionListener)f).actionPerformed(e);
            }
        } else if (cmd.equals("Step Over")) {
            returnValue = Dim.STEP_OVER;
        } else if (cmd.equals("Step Into")) {
            returnValue = Dim.STEP_INTO;
        } else if (cmd.equals("Step Out")) {
            returnValue = Dim.STEP_OUT;
        } else if (cmd.equals("Go")) {
            returnValue = Dim.GO;
        } else if (cmd.equals("Break")) {
            dim.setBreak();
        } else if (cmd.equals("Exit")) {
            exit();
        } else if (cmd.equals("Open")) {
            String fileName = chooseFile("Select a file to compile");
            if (fileName != null) {
                String text = readFile(fileName);
                if (text != null) {
                    RunProxy proxy = new RunProxy(this, RunProxy.OPEN_FILE);
                    proxy.fileName = fileName;
                    proxy.text = text;
                    new Thread(proxy).start();
                }
            }
        } else if (cmd.equals("Load")) {
            String fileName = chooseFile("Select a file to execute");
            if (fileName != null) {
                String text = readFile(fileName);
                if (text != null) {
                    RunProxy proxy = new RunProxy(this, RunProxy.LOAD_FILE);
                    proxy.fileName = fileName;
                    proxy.text = text;
                    new Thread(proxy).start();
                }
            }
        } else if (cmd.equals("More Windows...")) {
            MoreWindows dlg = new MoreWindows(this, fileWindows,
                                              "Window", "Files");
            dlg.showDialog(this);
        } else if (cmd.equals("Console")) {
            if (console.isIcon()) {
                desk.getDesktopManager().deiconifyFrame(console);
            }
            console.show();
            desk.getDesktopManager().activateFrame(console);
            console.consoleTextArea.requestFocus();
        } else if (cmd.equals("Cut")) {
        } else if (cmd.equals("Copy")) {
        } else if (cmd.equals("Paste")) {
        } else if (cmd.equals("Go to function...")) {
            FindFunction dlg = new FindFunction(this, "Go to function",
                                                "Function");
            dlg.showDialog(this);
        } else if (cmd.equals("Go to line...")) {
            final String s = (String) JOptionPane.showInputDialog(
                    this,
                    "Line number",
                    "Go to line...",
                    JOptionPane.QUESTION_MESSAGE,
                    null,
                    null,
                    null);
            if (s == null || s.trim().length() == 0) {
                return;
            }
            try {
                final int line = Integer.parseInt(s);
                showFileWindow(null, line);
            }
            catch (final NumberFormatException nfe) {
                // ignore
            }
        } else if (cmd.equals("Tile")) {
            JInternalFrame[] frames = desk.getAllFrames();
            int count = frames.length;
            int rows, cols;
            rows = cols = (int)Math.sqrt(count);
            if (rows*cols < count) {
                cols++;
                if (rows * cols < count) {
                    rows++;
                }
            }
            Dimension size = desk.getSize();
            int w = size.width/cols;
            int h = size.height/rows;
            int x = 0;
            int y = 0;
            for (int i = 0; i < rows; i++) {
                for (int j = 0; j < cols; j++) {
                    int index = (i*cols) + j;
                    if (index >= frames.length) {
                        break;
                    }
                    JInternalFrame f = frames[index];
                    try {
                        f.setIcon(false);
                        f.setMaximum(false);
                    } catch (Exception exc) {
                    }
                    desk.getDesktopManager().setBoundsForFrame(f, x, y,
                                                               w, h);
                    x += w;
                }
                y += h;
                x = 0;
            }
        } else if (cmd.equals("Cascade")) {
            JInternalFrame[] frames = desk.getAllFrames();
            int count = frames.length;
            int x, y, w, h;
            x = y = 0;
            h = desk.getHeight();
            int d = h / count;
            if (d > 30) d = 30;
            for (int i = count -1; i >= 0; i--, x += d, y += d) {
                JInternalFrame f = frames[i];
                try {
                    f.setIcon(false);
                    f.setMaximum(false);
                } catch (Exception exc) {
                }
                Dimension dimen = f.getPreferredSize();
                w = dimen.width;
                h = dimen.height;
                desk.getDesktopManager().setBoundsForFrame(f, x, y, w, h);
            }
        } else {
            Object obj = getFileWindow(cmd);
            if (obj != null) {
                FileWindow w = (FileWindow)obj;
                try {
                    if (w.isIcon()) {
                        w.setIcon(false);
                    }
                    w.setVisible(true);
                    w.moveToFront();
                    w.setSelected(true);
                } catch (Exception exc) {
                }
            }
        }
        if (returnValue != -1) {
            updateEnabled(false);
            dim.setReturnValue(returnValue);
        }
    }
1081929
private List<InvocationMessage> makePayloadInvocations() {
    final MessageFactory f = MessageFactoryHolder.FACTORY;

    final List<InvocationMessage> invocationMessages = new ArrayList<>();
    for (final AbstractRequest<?, ?> invocation : this.state.invocations) {
      // RequestData is produced by the generated subclass
      final RequestData data = invocation.getRequestData();
      final InvocationMessage message = f.invocation().as();

      // Operation; essentially a method descriptor
      message.setOperation(data.getOperation());

      // The arguments to the with() calls
      final Set<String> refsToSend = data.getPropertyRefs();
      if (!refsToSend.isEmpty()) {
        message.setPropertyRefs(refsToSend);
      }

      // Parameter values or references
      final List<Splittable> parameters = new ArrayList<>(data.getOrderedParameters().length);
      for (final Object param : data.getOrderedParameters()) {
        parameters.add(EntityCodex.encode(this, param));
      }
      if (!parameters.isEmpty()) {
        message.setParameters(parameters);
      }

      invocationMessages.add(message);
    }
    return invocationMessages;
  }
341182
private void toBeNormal(Invoker<?> invoker, Invocation invocation){
        String interfaceName = invoker.getUrl().getParameter(Constants.INTERFACE_KEY);
        String method = invocation.getMethodName();
        StringBuffer methodConfig = new StringBuffer(Config.DUBBO_REFERENCE_PREFIX);
        methodConfig.append(interfaceName).append(".").append(method);
        String methodKey = methodConfig.toString();
        //从其中删除对应的异常计数器
        BreakCounter counter = breakCounterMap.remove(methodKey);
        if(counter!=null){
            logger.info("[{}] [{}.{}] to be normal",localHost,interfaceName,methodKey);
            //将这个counter设置为失效
            counter.disable();
        }
    }
71166
@Override
	public ActionInvocation deserialize(ActionContext actionContext) {
		JsonActionInvocation that = this;
		that.container = actionContext.getContainer();
		return that;
	}
1193603
public void invokeAction (ClientObject caller, byte[] serializedAction)
    {
        NodeAction action = null;
        try {
            ObjectInputStream oin =
                new ObjectInputStream(new ByteArrayInputStream(serializedAction));
            action = (NodeAction)oin.readObject();
            _injector.injectMembers(action);
            action.invoke();
        } catch (Exception e) {
            log.warning("Failed to execute node action",
                        "from", (caller == null) ? "self" : caller.who(),
                        "action", action, "serializedSize", serializedAction.length, e);
        }
    }
1081984
function modInitFactoryInvoker( id ) {
        var module = modModules[ id ];
        var invoking;

        module.invokeFactory = invokeFactory;
        each( module.depPMs, function ( pluginModuleId ) {
            modAddDefinedListener( pluginModuleId, function () {
                each( module.depRs, function ( res ) {
                    if ( !res.absId && res.module === pluginModuleId ) {
                        res.absId = normalize( res.id, id );
                        nativeRequire( [ res.absId ], modAutoInvoke );
                    }
                } );
            } );
        } );

        /**
         * 初始化模块
         *
         * @inner
         */
        function invokeFactory() {
            if ( invoking || module.state !== MODULE_PREPARED ) {
                return;
            }

            invoking = 1;

            // 拼接factory invoke所需的arguments
            var factoryReady = 1;
            var factoryDeps = [];
            each(
                module.factoryDeps,
                function ( dep ) {
                    var depId = dep.absId;

                    if ( !BUILDIN_MODULE[ depId ] ) {
                        modTryInvokeFactory( depId );
                        if ( !modIs( depId, MODULE_DEFINED ) ) {
                            factoryReady = 0;
                            return false;
                        }
                    }

                    factoryDeps.push( depId );
                }
            );

            if ( factoryReady ) {
                try {
                    var args = modGetModulesExports(
                        factoryDeps,
                        {
                            require : module.require,
                            exports : module.exports,
                            module  : module
                        }
                    );

                    // 调用factory函数初始化module
                    var factory = module.factory;
                    var exports = typeof factory === 'function'
                        ? factory.apply( global, args )
                        : factory;

                    if ( exports != null ) {
                        module.exports = exports;
                    }

                    module.invokeFactory = null;
                }
                catch ( ex ) {
                    invoking = 0;
                    if ( /^\[MODULE_MISS\]"([^"]+)/.test( ex.message ) ) {
                        // 出错，则说明在factory的运行中，该require的模块是需要的
                        // 所以把它加入强依赖中
                        var hardCirclurDep = module.depMkv[ RegExp.$1 ];
                        hardCirclurDep && (hardCirclurDep.hard = 1);
                        return;
                    }

                    throw ex;
                }

                // 完成define
                // 不放在try里，避免后续的运行错误被这里吞掉
                modDefined( id );
            }
        }
    }
761680
function (e) {
			var mode, i;
			var keyModes = this._keyModes;
			for (i = keyModes.length - 1 ; i >= 0; i--) {
				mode = keyModes[i];
				if (typeof mode.match === "function") { //$NON-NLS-1$
					var actionID = mode.match(e);
					if (actionID !== undefined) {
						return this.invokeAction(actionID);
					}
				}
			}
			return false;
		}
779699
@Override
    public CRLReason getRevocationReason() {
        Extension ext = getExtension(PKIXExtensions.ReasonCode_Id);
        if (ext == null) {
            return null;
        }
        CRLReasonCodeExtension rcExt = (CRLReasonCodeExtension) ext;
        return rcExt.getReasonCode();
    }