code: public void notifyGroup(String groupId, String unitId, String transactionType, int state) {
          try {
              txLogger.txTrace(
                      groupId, unitId, "notify group > transaction type: {}, state: {}.", transactionType, state);
              if (globalContext.isDTXTimeout()) {
                  throw new LcnBusinessException("dtx timeout.");
              }
              state = reliableMessenger.notifyGroup(groupId, state);
              transactionCleanTemplate.clean(groupId, unitId, transactionType, state);
          } catch (TransactionClearException e) {
              txLogger.trace(groupId, unitId, Transactions.TE, "clean transaction fail.");
          } catch (RpcException e) {
              dtxExceptionHandler.handleNotifyGroupMessageException(Arrays.asList(groupId, state, unitId, transactionType), e);
          } catch (LcnBusinessException e) {
              // 关闭事务组失败
              dtxExceptionHandler.handleNotifyGroupBusinessException(Arrays.asList(groupId, state, unitId, transactionType), e.getCause());
          }
          txLogger.txTrace(groupId, unitId, "notify group exception state {}.", state);
      }
docs: Client通知事务组操作集合
  
  @param groupId         groupId
  @param unitId          unitId
  @param transactionType transactionType
  @param state           transactionState