diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..4a459866a57c25462afad17f3fe0b50d440da080
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,177 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
\ No newline at end of file
diff --git a/README.en.md b/README.en.md
index 85c5c7b3fdf75bc3a45bb12ec96654240f686a91..79441b64fc662a3fcca4d47f20400518f379c055 100644
--- a/README.en.md
+++ b/README.en.md
@@ -1,36 +1,65 @@
-# resourceschedule_workscheduler
+# Work Scheduler
-#### Description
-{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**}
+- [Introduction](#section11660541593)
+- [Directory Structure](#section161941989596)
+- [Work Scheduler](#section1312121216216)
+ - [Available APIs](#section114564657874)
+ - [Usage Guidelines](#section129654513264)
+ - [Restrictions on Using Work Scheduler](#section1551164914237)
-#### Software Architecture
-Software architecture description
+- [Repositories Involved](#section1371113476307)
-#### Installation
+## Introduction
-1. xxxx
-2. xxxx
-3. xxxx
+In the resource scheduling subsystem, the work scheduler component provides a mechanism for applications to perform tasks that require low real-time performance. When the set conditions are met, it will be put into the executable queue, and the system will delay triggering tasks in the executable queue according to the equipment situation.
-#### Instructions
+## Directory Structure
-1. xxxx
-2. xxxx
-3. xxxx
+```
-#### Contribution
+├── frameworks # Frameworks
+├── interfaces
+│ ├── innerkits # Internal APIs
+│ └── kits # External APIs
+├── sa_profile # SA profile
+├── services # Services
+└── utils # Utilities
-1. Fork the repository
-2. Create Feat_xxx branch
-3. Commit your code
-4. Create Pull Request
+```
+## Work Scheduler
+### Available APIs
-#### Gitee Feature
+API | Description
+---------------------------------------------------------|-----------------------------------------
+function startWork(work: WorkInfo): boolean; | work scheduler application
+function stopWork(work: WorkInfo, needCancel?: boolean): boolean; | work scheduler cancel
+function getWorkStatus(workId: number, callback: AsyncCallback): void;| get the status of work(Callback form)
+function getWorkStatus(workId: number): Promise; | get the status of work(Promise form)
+function obtainAllWorks(callback: AsyncCallback): Array;| get all works(Callback form)
+function obtainAllWorks(): Promise>;| get all works(Promise form)
+function stopAndClearWorks(): boolean;| stop and clear work
+function isLastWorkTimeOut(workId: number, callback: AsyncCallback): boolean;| Get whether the last task has timed out(Callback form)
+function isLastWorkTimeOut(workId: number): Promise;| Get whether the last task has timed out(Promise form)
-1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
-2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
-3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
-4. The most valuable open source project [GVP](https://gitee.com/gvp)
-5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
-6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
+### Usage Guidelines
+
+When an application needs to perform tasks with low real-time performance, work scheduler can be used. When the conditions set by the application are met, the mechanism will make a unified decision and scheduling time based on the current state of the system, such as memory, power consumption, and heat.
+
+#### Restrictions on Using Work Scheduler
+
+Adhere to the following constraints and rules when using work scheduler:
+
+- **Timeout**:The longest running time is 120s each time.
+
+## Repositories Involved
+
+Resource Schedule subsystem
+
+**work\_scheduler**
+
+notification_ces_standard
+
+appexecfwk_standard
+
+powermgr_battery_manager
\ No newline at end of file
diff --git a/README.md b/README.md
index 78788b3c5e30da00e61142f52addd887832f9c79..53f4712fe8ac8962fc7259abab2828d24b598431 100644
--- a/README.md
+++ b/README.md
@@ -1,39 +1,64 @@
-# resourceschedule_workscheduler
-
-#### 介绍
-{**以下是 Gitee 平台说明,您可以替换此简介**
-Gitee 是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台
-无论是个人、团队、或是企业,都能够用 Gitee 实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)}
-
-#### 软件架构
-软件架构说明
-
-
-#### 安装教程
-
-1. xxxx
-2. xxxx
-3. xxxx
-
-#### 使用说明
-
-1. xxxx
-2. xxxx
-3. xxxx
-
-#### 参与贡献
-
-1. Fork 本仓库
-2. 新建 Feat_xxx 分支
-3. 提交代码
-4. 新建 Pull Request
-
-
-#### 特技
-
-1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
-2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
-3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
-4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
-5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
-6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
+# 延迟任务调度
+
+- [简介](#section11660541593)
+- [目录](#section161941989596)
+- [延迟任务调度](#section1312121216216)
+ - [接口说明](#section114564657874)
+ - [使用说明](#section129654513264)
+ - [延迟任务调度使用约束](#section1551164914237)
+
+- [相关仓](#section1371113476307)
+
+## 简介
+
+在资源调度子系统中,延迟任务调度部件,给应用提供了一个机制,用以执行对实时性要求低的任务。当满足设定条件时,会被放入可执行队列,系统根据设备情况,延迟触发可执行队列内的任务。
+
+## 目录
+
+```
+
+├── frameworks # 接口实现
+├── interfaces
+│ ├── innerkits # 对内接口目录
+│ └── kits # 对外接口目录
+├── sa_profile # 组件服务配置
+├── services # 组件服务实现
+└── utils # 组件工具实现
+
+```
+## 延迟任务调度
+
+### 接口说明
+
+接口名 | 接口描述
+---------------------------------------------------------|-----------------------------------------
+function startWork(work: WorkInfo): boolean; | 延迟调度任务申请
+function stopWork(work: WorkInfo, needCancel?: boolean): boolean; | 延迟调度任务取消
+function getWorkStatus(workId: number, callback: AsyncCallback): void;| 获取延迟调度任务状态(Callback形式)
+function getWorkStatus(workId: number): Promise; | 获取延迟调度任务状态(Promise形式)
+function obtainAllWorks(callback: AsyncCallback): Array;| 获取所有延迟调度任务(Callback形式)
+function obtainAllWorks(): Promise>;| 获取所有延迟调度任务(Promise形式)
+function stopAndClearWorks(): boolean;| 停止并清除任务
+function isLastWorkTimeOut(workId: number, callback: AsyncCallback): boolean;| 获取上次任务是否超时(Callback形式)
+function isLastWorkTimeOut(workId: number): Promise;| 获取上次任务是否超时(Promise形式)
+
+### 使用说明
+应用要执行实时性不高的任务的时,可以使用延迟调度任务,该机制在满足应用设定条件的时候,会根据系统当前的状态,如内存、功耗、热等统一决策调度时间。
+
+#### 延迟调度任务使用约束
+
+延迟调度任务的使用需要遵从如下约束和规则:
+
+- **超时**:每次最长运行120s。
+
+## 相关仓
+
+资源调度子系统
+
+**work\_scheduler**
+
+notification_ces_standard
+
+appexecfwk_standard
+
+powermgr_battery_manager
\ No newline at end of file
diff --git a/interfaces/kits/js/@ohos.workscheduler.d.ts b/interfaces/kits/js/@ohos.workscheduler.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..a8b97e68439412cf7dca6fae3f977f9bbb090c33
--- /dev/null
+++ b/interfaces/kits/js/@ohos.workscheduler.d.ts
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import {AsyncCallback} from './basic';
+
+declare namespace workScheduler {
+ export enum NetworkType {
+ NETWORK_TYPE_ANY = 0,
+ NETWORK_TYPE_MOBILE,
+ NETWORK_TYPE_WIFI,
+ NETWORK_TYPE_BLUETOOTH,
+ NETWORK_TYPE_WIFI_P2P,
+ NETWORK_TYPE_ETHERNET
+ }
+ export enum ChargingType {
+ CHARGING_PLUGGED_ANY = 0,
+ CHARGING_PLUGGED_AC,
+ CHARGING_PLUGGED_USB,
+ CHARGING_PLUGGED_WIRELESS
+ }
+ export enum BatteryStatus {
+ BATTERY_STATUS_LOW = 0,
+ BATTERY_STATUS_OKAY,
+ BATTERY_STATUS_LOW_OR_OKAY
+ }
+ export enum StorageRequest {
+ STORAGE_LEVEL_LOW = 0,
+ STORAGE_LEVEL_OKAY,
+ STORAGE_LEVEL_LOW_OR_OKAY
+ }
+ export interface WorkInfo {
+ readonly workId: number;
+ networkType: NetworkType;
+ isDeepIdle: boolean;
+ idleWaitTime: number;
+ isCharging: boolean;
+ chargingType: ChargingType;
+ batteryLevel: number;
+ batteryStatus: BatteryStatus;
+ storageRequest: StorageRequest;
+ isRepeat: boolean;
+ isPersisted: boolean;
+ repeatCycleTime: number;
+ repeatCount: number;
+ bundleName: string;
+ abilityName: string;
+ }
+ function startWork(work: WorkInfo): boolean;
+ function stopWork(work: WorkInfo, needCancel?: boolean): boolean;
+ function getWorkStatus(workId: number, callback: AsyncCallback): void;
+ function getWorkStatus(workId: number): Promise;
+ function obtainAllWorks(callback: AsyncCallback): Array;
+ function obtainAllWorks(): Promise>;
+ function stopAndClearWorks(): boolean;
+ function isLastWorkTimeOut(workId: number, callback: AsyncCallback): boolean;
+ function isLastWorkTimeOut(workId: number): Promise;
+}
+export default workScheduler;
\ No newline at end of file
diff --git a/ohos.build b/ohos.build
new file mode 100644
index 0000000000000000000000000000000000000000..f1bc4e67011ef286b94a9a52a9edc7527018433e
--- /dev/null
+++ b/ohos.build
@@ -0,0 +1,12 @@
+{
+ "subsystem": "resourceschedule",
+ "parts": {
+ "work_scheduler": {
+ "module_list": [
+ "//foundation/resourceschedule/work_scheduler/services:workschedservice",
+ "//foundation/resourceschedule/work_scheduler/sa_profile:worksched_sa_profile",
+ "//foundation/resourceschedule/work_scheduler/sa_profile:work_scheduler_service_init"
+ ]
+ }
+ }
+}
diff --git a/sa_profile/1904.xml b/sa_profile/1904.xml
new file mode 100644
index 0000000000000000000000000000000000000000..958b9e7c8c3b4a02bff2f2b608f7f64025822687
--- /dev/null
+++ b/sa_profile/1904.xml
@@ -0,0 +1,24 @@
+
+
+
+ work_scheduler_service
+
+ 1904
+ libworkschedservice.z.so
+ true
+ false
+ 1
+
+
\ No newline at end of file
diff --git a/sa_profile/BUILD.gn b/sa_profile/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..cac1e495a0dbce1e4430b6a0827b7404925186b5
--- /dev/null
+++ b/sa_profile/BUILD.gn
@@ -0,0 +1,26 @@
+# Copyright (c) 2021 Huawei Device Co., Ltd.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//foundation/resourceschedule/work_scheduler/workscheduler.gni")
+import("//build/ohos/sa_profile/sa_profile.gni")
+
+ohos_prebuilt_etc("work_scheduler_service_init") {
+ source = "etc/work_scheduler_service.cfg"
+ relative_install_dir = "init"
+ part_name = "${worksched_native_part_name}"
+}
+
+ohos_sa_profile("worksched_sa_profile") {
+ sources = [ "1904.xml" ]
+ part_name = "${worksched_native_part_name}"
+}
\ No newline at end of file
diff --git a/sa_profile/etc/work_scheduler_service.cfg b/sa_profile/etc/work_scheduler_service.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c1c874c4758535abedd7b9b84dc79977f02ca66d
--- /dev/null
+++ b/sa_profile/etc/work_scheduler_service.cfg
@@ -0,0 +1,17 @@
+{
+ "jobs" : [{
+ "name" : "boot",
+ "cmds" : [
+ "exec /system/bin/sleep 5",
+ "start work_scheduler_service"
+ ]
+ }
+ ],
+ "services" : [{
+ "name" : "work_scheduler_service",
+ "path" : ["/system/bin/sa_main", "/system/profile/work_scheduler_service.xml"],
+ "uid" : "system",
+ "gid" : ["system", "shell"]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/services/BUILD.gn b/services/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..7a322c4c9f1298092c275e289a02841ead3c42f4
--- /dev/null
+++ b/services/BUILD.gn
@@ -0,0 +1,52 @@
+# Copyright (c) 2022 Huawei Device Co., Ltd.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//foundation/resourceschedule/work_scheduler/workscheduler.gni")
+
+config("worksched_private_config") {
+ include_dirs = [
+ "//utils/native/base/include"
+ ]
+}
+
+config("worksched_public_config") {
+ include_dirs = [
+ "native/include"
+ ]
+}
+
+ohos_shared_library("workschedservice") {
+ sources = [
+ "native/src/work_scheduler_service.cpp"
+ ]
+
+ configs = [
+ ":worksched_private_config",
+ ]
+
+ public_configs = [ ":worksched_public_config" ]
+
+ deps = [
+ "//utils/native/base:utils",
+ "${worksched_utils_path}:workschedutils",
+ ]
+
+ external_deps = [
+ "safwk:system_ability_fwk",
+ "ipc:ipc_core",
+ "samgr_standard:samgr_proxy",
+ "hiviewdfx_hilog_native:libhilog",
+ ]
+
+ part_name = "${worksched_native_part_name}"
+}
\ No newline at end of file
diff --git a/services/native/include/work_scheduler_service.h b/services/native/include/work_scheduler_service.h
new file mode 100644
index 0000000000000000000000000000000000000000..c6904d382a4cbd23888a7e7f490d3ba4ff53877c
--- /dev/null
+++ b/services/native/include/work_scheduler_service.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef WORK_SCHED_SERVICES_WORK_SCHEDULER_SERVICES_H
+#define WORK_SCHED_SERVICES_WORK_SCHEDULER_SERVICES_H
+
+#include "refbase.h"
+#include "singleton.h"
+#include "system_ability.h"
+#include "system_ability_definition.h"
+
+namespace OHOS {
+namespace WorkScheduler {
+class WorkSchedulerService final : public SystemAbility,
+ public std::enable_shared_from_this{
+ DISALLOW_COPY_AND_MOVE(WorkSchedulerService);
+ DECLARE_SYSTEM_ABILITY(WorkSchedulerService);
+ DECLARE_DELAYED_SINGLETON(WorkSchedulerService);
+public:
+ WorkSchedulerService(const int32_t systemAbilityId, bool runOnCreate);
+ virtual void OnStart() override;
+ virtual void OnStop() override;
+
+private:
+ bool Init();
+ bool ready_ {false};
+};
+} // namespace WorkScheduler
+} // namespace OHOS
+
+#endif // WORK_SCHED_SERVICES_WORK_SCHEDULER_SERVICES_H
\ No newline at end of file
diff --git a/services/native/src/work_scheduler_service.cpp b/services/native/src/work_scheduler_service.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b2b98e0af3933b61b51de708f8967b388f66939c
--- /dev/null
+++ b/services/native/src/work_scheduler_service.cpp
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "work_scheduler_service.h"
+#include "work_sched_hilog.h"
+
+namespace OHOS {
+namespace WorkScheduler {
+
+namespace {
+const std::string WORKSCHEDULER_SERVICE_NAME = "WorkSchedulerService";
+const bool G_REGISTER_RESULT = SystemAbility::MakeAndRegisterAbility(
+ DelayedSingleton::GetInstance().get());
+}
+
+WorkSchedulerService::WorkSchedulerService() : SystemAbility(WORK_SCHEDULE_SERVICE_ID, true) {}
+
+WorkSchedulerService::~WorkSchedulerService() {}
+
+void WorkSchedulerService::OnStart()
+{
+ WS_HILOGI(MODULE_SERVICE, "OnStart enter.");
+ if (ready_) {
+ WS_HILOGI(MODULE_SERVICE, "OnStart is ready, nothing to do.");
+ return;
+ }
+
+ ready_ = true;
+ WS_HILOGI(MODULE_SERVICE, "OnStart and add system ability success.");
+}
+
+void WorkSchedulerService::OnStop()
+{
+ WS_HILOGI(MODULE_SERVICE, "stop service.");
+}
+} // namespace WorkScheduler
+} // namespace OHOS
diff --git a/utils/BUILD.gn b/utils/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..a250dc8ed3ce649b54a71652f964f22cb51518fa
--- /dev/null
+++ b/utils/BUILD.gn
@@ -0,0 +1,38 @@
+# Copyright (c) 2021 Huawei Device Co., Ltd.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//foundation/resourceschedule/work_scheduler/workscheduler.gni")
+
+config("utils_config") {
+ include_dirs = [
+ "native/include",
+ "//utils/native/base/include"
+ ]
+}
+
+ohos_source_set("workschedutils") {
+ sources = [
+ ]
+
+ public_configs = [ ":utils_config" ]
+
+ deps = [
+ "//utils/native/base:utils"
+ ]
+
+ external_deps = [
+ "hiviewdfx_hilog_native:libhilog"
+ ]
+
+ part_name = "${worksched_native_part_name}"
+}
diff --git a/utils/native/include/work_sched_errors.h b/utils/native/include/work_sched_errors.h
new file mode 100644
index 0000000000000000000000000000000000000000..4e2520a92cc94bae93e28074a9212913408e3a24
--- /dev/null
+++ b/utils/native/include/work_sched_errors.h
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef WORK_SCHED_UTILS_ERRORS_H
+#define WORK_SCHED_UTILS_ERRORS_H
+
+#include
+
+namespace OHOS {
+namespace WorkScheduler {
+
+// WorkScheduler's module const defined.
+enum {
+ WORKSCHED_MODULE_TYPE = 0x00,
+};
+
+// offset of workscheduler error, only be used in this file.
+constexpr ErrCode WORKSCHED_SERVICE_ERR_OFFSET = ErrCodeOffset(SUBSYS_IAWARE, WORKSCHED_MODULE_TYPE);
+
+enum {
+ E_WRITE_PARCEL_ERROR = WORKSCHED_SERVICE_ERR_OFFSET + 1,
+ E_READ_PARCEL_ERROR,
+ E_GET_SYSTEM_ABILITY_MANAGER_FAILED_WORKSCHED,
+ E_GET_WORKSCHED_SERVICE_FALIED,
+ E_START_WORK_FAILED,
+ E_STOP_WORK_FAILED,
+ E_STOP_AND_CANCEL_WORK_FAILED,
+ E_STOP_AND_CLEAR_WORKS_FAILED,
+ E_IS_LAST_WORK_TIMEOUT_FALSE,
+ E_ADD_WORK_SCHED_DEATH_RECIPIENT_FAILED,
+ E_INNER_ERR
+};
+
+} // namespace WorkScheduler
+} // namespace OHOS
+
+#endif // WORK_SCHED_UTILS_ERRORS_H
\ No newline at end of file
diff --git a/utils/native/include/work_sched_hilog.h b/utils/native/include/work_sched_hilog.h
new file mode 100644
index 0000000000000000000000000000000000000000..d5d75288d4ee8b33ea9e645338374514b8f40f27
--- /dev/null
+++ b/utils/native/include/work_sched_hilog.h
@@ -0,0 +1,101 @@
+/*
+ * Copyright (c) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef WORK_SCHED_UTILS_HILOG_H
+#define WORK_SCHED_UTILS_HILOG_H
+
+#define CONFIG_HILOG
+#ifdef CONFIG_HILOG
+#include "hilog/log.h"
+
+namespace OHOS {
+namespace WorkScheduler {
+#define __FILENAME__ (__builtin_strchr(__FILE__, '/') ? __builtin_strchr(__FILE__, '/') + 1 : __FILE__)
+#define __FORMATED(fmt, ...) "[%{public}s] %{public}s# " fmt, __FILENAME__, __FUNCTION__, ##__VA_ARGS__
+
+#ifdef WORKSCHED_HILOGF
+#undef WORKSCHED_HILOGF
+#endif
+
+#ifdef WORKSCHED_HILOGE
+#undef WORKSCHED_HILOGE
+#endif
+
+#ifdef WORKSCHED_HILOGW
+#undef WORKSCHED_HILOGW
+#endif
+
+#ifdef WORKSCHED_HILOGI
+#undef WORKSCHED_HILOGI
+#endif
+
+#ifdef WORKSCHED_HILOGD
+#undef WORKSCHED_HILOGD
+#endif
+
+// param of log interface, such as WORKSCHED_HILOGF.
+enum WorkSchedSubModule {
+ MODULE_INNERKIT = 0,
+ MODULE_SERVICE,
+ MODULE_JAVAKIT,
+ MODULE_JNI,
+ MODULE_COMMON,
+ MODULE_JS_NAPI,
+ WORKSCHED_MODULE_BUTT,
+};
+
+// 0xD001900: subsystem:resouceschedule module:workscheduler, 8 bits reserved.
+static constexpr unsigned int BASE_WORKSCHEDULER_DOMAIN_ID = 0xD001900;
+
+enum WorkSchedDomainId {
+ WORKSCHED_INNERKIT_DOMAIN = BASE_WORKSCHEDULER_DOMAIN_ID + MODULE_INNERKIT,
+ WORKSCHED_SERVICE_DOMAIN,
+ WORKSCHED_JAVAKIT_DOMAIN,
+ WORKSCHED_JNI_DOMAIN,
+ COMMON_DOMAIN,
+ WORKSCHED_JS_NAPI,
+ WORKSCHED_BUTT,
+};
+
+static constexpr OHOS::HiviewDFX::HiLogLabel WORKSCHED_LABEL[WORKSCHED_MODULE_BUTT] = {
+ {LOG_CORE, WORKSCHED_INNERKIT_DOMAIN, "WorkSchedInnerKit"},
+ {LOG_CORE, WORKSCHED_SERVICE_DOMAIN, "WorkSchedService"},
+ {LOG_CORE, WORKSCHED_JAVAKIT_DOMAIN, "WorkSchedJavaKit"},
+ {LOG_CORE, WORKSCHED_JNI_DOMAIN, "WorkSchedJni"},
+ {LOG_CORE, COMMON_DOMAIN, "WorkSchedCommon"},
+ {LOG_CORE, WORKSCHED_JS_NAPI, "WorkSchedJSNAPI"},
+};
+
+// In order to improve performance, do not check the module range.
+// Besides, make sure module is less than WORKSCHED_MODULE_BUTT.
+#define WS_HILOGF(module, ...) (void)OHOS::HiviewDFX::HiLog::Fatal(WORKSCHED_LABEL[module], __FORMATED(__VA_ARGS__))
+#define WS_HILOGE(module, ...) (void)OHOS::HiviewDFX::HiLog::Error(WORKSCHED_LABEL[module], __FORMATED(__VA_ARGS__))
+#define WS_HILOGW(module, ...) (void)OHOS::HiviewDFX::HiLog::Warn(WORKSCHED_LABEL[module], __FORMATED(__VA_ARGS__))
+#define WS_HILOGI(module, ...) (void)OHOS::HiviewDFX::HiLog::Info(WORKSCHED_LABEL[module], __FORMATED(__VA_ARGS__))
+#define WS_HILOGD(module, ...) (void)OHOS::HiviewDFX::HiLog::Debug(WORKSCHED_LABEL[module], __FORMATED(__VA_ARGS__))
+} // namespace WorkScheduler
+} // namespace OHOS
+
+#else
+
+#define WS_HILOGF(...)
+#define WS_HILOGE(...)
+#define WS_HILOGW(...)
+#define WS_HILOGI(...)
+#define WS_HILOGD(...)
+
+#endif // CONFIG_HILOG
+
+#endif // WORK_SCHED_UTILS_HILOG_H
\ No newline at end of file
diff --git a/workscheduler.gni b/workscheduler.gni
new file mode 100644
index 0000000000000000000000000000000000000000..d16adbd619502d3ff40c6e69b36d8e6c469f1007
--- /dev/null
+++ b/workscheduler.gni
@@ -0,0 +1,32 @@
+# Copyright (c) 2022 Huawei Device Co., Ltd.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build/ohos.gni")
+
+worksched_native_part_name = "work_scheduler"
+
+worksched_root_path = "//foundation/resourceschedule/work_scheduler"
+
+worksched_service_path = "${worksched_root_path}/services"
+
+worksched_kits_path = "${worksched_root_path}/kits"
+
+worksched_utils_path = "${worksched_root_path}/utils"
+
+worksched_interfaces_path = "${worksched_root_path}/interfaces"
+
+worksched_native_innerkits_path = "${worksched_interfaces_path}/innerkits"
+
+worksched_frameworks_path = "${worksched_root_path}/frameworks"
+
+system_type = "default"
\ No newline at end of file