NC-V6组织架构解析:主组织与多集团应用

需积分: 47 5 下载量 11 浏览量 更新于2024-07-10 收藏 1.87MB PPT 举报
"NC-V6总体应用架构着重于组织篇,深入探讨了多组织应用架构在企业中的实施和管理。由用友软件股份有限公司的NC产品管理与应用规划部于2009年10月发布,内容涵盖主组织、组织建模、集团目录与业务初始化、组织机构定义、组织间关系、组织模型管理、组织结构图以及组织管理产品形态。" 在NC-V6中,组织架构设计是关键,主要分为以下几个核心知识点: 1. **主组织**: 主组织(Masterorg)是业务操作的核心,它定义了业务数据的隔离范围,并且是权限划分、业务数据存储和单据上下文的基础。主组织包括全局、集团和组织单元等多个层次,每个主组织对应特定的业务职能。权限分配、档案和单据的管理均基于主组织,同时,主组织也是获取公共资源如参照、模板、流程配置等的依据。 2. **组织建模**: 组织建模涉及到企业内部的组织结构设计,包括公司、分公司、工厂、办事处和部门等。组织单元(OrgUnit)是基本的业务执行单元,可同时具备多种业务职能,是企业管理、核算的最小单位。 3. **集团目录与业务初始化**: 集团目录定义了大型集团企业内的各个子集团和业务板块,是主数据和部分组织数据隔离的边界。业务初始化则是在系统中设置这些组织的基本信息,确保数据的一致性和准确性。 4. **组织机构定义**: 这一步涉及创建和配置企业内的组织结构,包括组织单元之间的关系和层次,以及它们在集团目录中的位置。 5. **组织间关系**: 不同的组织单元之间可能存在各种业务关系,如供应链中的供应商、客户、生产者等,理解并管理这些关系对于优化业务流程至关重要。 6. **组织模型管理**: 这包括对组织模型的维护和调整,以适应企业发展的变化,如新增组织单元、调整组织结构或改变业务职能。 7. **组织结构图**: 通过组织结构图,企业可以直观地了解各级组织单元的分布和关系,有助于决策制定和流程优化。 8. **组织管理产品形态**: NC-V6提供的组织管理工具支持不同业务领域的应用,如集团财务、供应链、预算和报表等,每个领域都有特定的主组织对应,以实现业务数据的精细化管理和协同。 NC-V6的多组织应用架构为企业提供了灵活且严谨的组织管理体系,旨在满足大型集团企业在复杂业务环境下的高效运营需求。通过深入理解和运用这些知识点,企业可以更好地进行资源分配、权限控制和业务流程优化。

class SVDRecommender: def __init__(self, k=50, ncv=None, tol=0, which='LM', v0=None, maxiter=None, return_singular_vectors=True, solver='arpack'): self.k = k self.ncv = ncv self.tol = tol self.which = which self.v0 = v0 self.maxiter = maxiter self.return_singular_vectors = return_singular_vectors self.solver = solver def svds(self, A): if self.which == 'LM': largest = True elif self.which == 'SM': largest = False else: raise ValueError("which must be either 'LM' or 'SM'.") if not (isinstance(A, LinearOperator) or isspmatrix(A) or is_pydata_spmatrix(A)): A = np.asarray(A) n, m = A.shape if self.k <= 0 or self.k >= min(n, m): raise ValueError("k must be between 1 and min(A.shape), k=%d" % self.k) if isinstance(A, LinearOperator): if n > m: X_dot = A.matvec X_matmat = A.matmat XH_dot = A.rmatvec XH_mat = A.rmatmat else: X_dot = A.rmatvec X_matmat = A.rmatmat XH_dot = A.matvec XH_mat = A.matmat dtype = getattr(A, 'dtype', None) if dtype is None: dtype = A.dot(np.zeros([m, 1])).dtype else: if n > m: X_dot = X_matmat = A.dot XH_dot = XH_mat = _herm(A).dot else: XH_dot = XH_mat = A.dot X_dot = X_matmat = _herm(A).dot def matvec_XH_X(x): return XH_dot(X_dot(x)) def matmat_XH_X(x): return XH_mat(X_matmat(x)) XH_X = LinearOperator(matvec=matvec_XH_X, dtype=A.dtype, matmat=matmat_XH_X, shape=(min(A.shape), min(A.shape))) #获得隐式定义的格拉米矩阵的低秩近似。 eigvals, eigvec = eigsh(XH_X, k=self.k, tol=self.tol ** 2, maxiter=self.maxiter, ncv=self.ncv, which=self.which, v0=self.v0) #格拉米矩阵有实非负特征值。 eigvals = np.maximum(eigvals.real, 0) #使用来自pinvh的小特征值的复数检测。 t = eigvec.dtype.char.lower() factor = {'f': 1E3, 'd': 1E6} cond = factor[t] * np.finfo(t).eps cutoff = cond * np.max(eigvals) #获得一个指示哪些本征对不是简并微小的掩码, #并为阈值奇异值创建一个重新排序数组。 above_cutoff = (eigvals > cutoff) nlarge = above_cutoff.sum() nsmall = self.k - nlarge slarge = np.sqrt(eigvals[above_cutoff]) s = np.zeros_like(eigvals) s[:nlarge] = slarge if not self.return_singular_vectors: return np.sort(s) if n > m: vlarge = eigvec[:, above_cutoff] ularge = X_matmat(vlarge) / slarge if self.return_singular_vectors != 'vh' else None vhlarge = _herm(vlarge) else: ularge = eigvec[:, above_cutoff] vhlarge = _herm(X_matmat(ularge) / slarge) if self.return_singular_vectors != 'u' else None u = _augmented_orthonormal_cols(ularge, nsmall) if ularge is not None else None vh = _augmented_orthonormal_rows(vhlarge, nsmall) if vhlarge is not None else None indexes_sorted = np.argsort(s) s = s[indexes_sorted] if u is not None: u = u[:, indexes_sorted] if vh is not None: vh = vh[indexes_sorted] return u, s, vh def _augmented_orthonormal_cols(U, n): if U.shape[0] <= n: return U Q, R = np.linalg.qr(U) return Q[:, :n] def _augmented_orthonormal_rows(V, n): if V.shape[1] <= n: return V Q, R = np.linalg.qr(V.T) return Q[:, :n].T def _herm(x): return np.conjugate(x.T) 将上述代码修改为使用LM,迭代器使用arpack

2023-06-08 上传