AssemblyLine 0.1.1

AssemblyLine 0.1.1

测试已验证
语言语言 SwiftSwift
许可证 MIT
发布最新版本2017年4月
SwiftSwift版本3.1
SPM支持SPM

1amageek维护。




AssemblyLine在后台持续执行多个任务。丢弃执行期间失败的任务。

使用方法👻

以特斯拉工厂为例。

定义状态。

enum ModelXStatus: StatusProtocol {
    case spec
    case assembly
    case paint
}

定义错误。

enum ModelXError: Error {
    case invalid
}

定义Processable协议。

class ModelX: Processable {
    
    typealias Status = ModelXStatus
    
    var error: Error?
    var id: String
    var status: Status
    var workItem: DispatchWorkItem?
    var isAssembled: Bool = false
    var color: UIColor?
    
    init() {
        self.id = UUID().uuidString
        self.status = .spec        
    }
    
    // Processing when an error occurs
    func dispose(_ error: Error?) {
        
    }
}
struct ModelXPackage: Packageable {
    var products: [ModelX]
}
// Define workflow steps
let assembly: Step<ModelX> = Step({ (product) -> ModelX in
    product.isAssembled = true
    return product
})

// Define workflow steps
let paint: Step<ModelX> = Step({ (product) -> ModelX in
    product.color = .white
    return product
})

// Making a manufacturing line to do workflow
let line: Line<ModelX, ModelXPackage> = Line(workflow: [assembly, paint])

// Generate 10 ModelX
(0..<10).forEach({ (index) in
    let product: ModelX = ModelX()
    line.generate(product)
})

// Packaging
line.packing { (products, isStopped) in    
    if isStopped {
        print("Line is stopped")
        return
    }
    let package = ModelXPackage(products: products)
}